CN113678444B - 具有自适应运动矢量分辨率的仿射模式的熵编解码 - Google Patents

具有自适应运动矢量分辨率的仿射模式的熵编解码 Download PDF

Info

Publication number
CN113678444B
CN113678444B CN202080025292.8A CN202080025292A CN113678444B CN 113678444 B CN113678444 B CN 113678444B CN 202080025292 A CN202080025292 A CN 202080025292A CN 113678444 B CN113678444 B CN 113678444B
Authority
CN
China
Prior art keywords
flag
motion vector
block
affine
codec
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.)
Active
Application number
CN202080025292.8A
Other languages
English (en)
Other versions
CN113678444A (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.)
Beijing ByteDance Network Technology Co Ltd
ByteDance Inc
Original Assignee
Beijing ByteDance Network Technology Co Ltd
ByteDance 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 Beijing ByteDance Network Technology Co Ltd, ByteDance Inc filed Critical Beijing ByteDance Network Technology Co Ltd
Publication of CN113678444A publication Critical patent/CN113678444A/zh
Application granted granted Critical
Publication of CN113678444B publication Critical patent/CN113678444B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame 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/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/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/1887Methods 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 a variable length codeword
    • 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/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding

Landscapes

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

Abstract

一种用于可视媒体处理的方法包括:在当前视频块和当前视频块的比特流表示之间的转换期间,使用由多个二进制位组成的语法元素用于处理当前视频块,其中,语法元素根据上下文模型而选择,使得第一上下文模型被应用于选择第一语法元素的第一二进制位,并且第二上下文模型被应用于选择除第一语法元素的第一二进制位之外的所有二进制位。

Description

具有自适应运动矢量分辨率的仿射模式的熵编解码
相关申请的交叉引用
本申请旨在及时要求2019年3月27日提交的第PCT/CN2019/079962号国际专利申请的优先权和利益。前述申请的全部公开通过引用而并入作为本申请的公开的一部分。
技术领域
本专利文档涉及视频编码和解码技术、设备和系统。
背景技术
尽管视频压缩有所进步,但数字视频仍占互联网和其它数字通信网络上的最大带宽使用。随着能够接收和显示视频的连接用户设备的数量增加,预计对数字视频使用的带宽需求将继续增长。
发明内容
描述了与数字视频编解码相关,具体地,与具有自适应运动矢量分辨率(AdaptiveMotion Vector Resolution,AMVR)的仿射模式的运动矢量预测值推导和信令通知相关的设备、系统和方法。所描述的方法可以被应用于现有的视频编解码标准(例如,高效视频编解码(High Efficiency Video Coding,HEVC))和未来的视频编解码标准或视频编解码器。
在一个代表性方面,所公开的技术可以用于提供一种用于可视媒体处理的方法。该方法包括:在当前视频块和当前视频块的比特流表示之间的转换期间,使用由多个二进制位组成的语法元素用于处理当前视频块,其中,语法元素根据上下文模型而选择,使得第一上下文模型被应用于选择第一语法元素的第一二进制位,并且第二上下文模型被应用于选择除第一语法元素的第一二进制位之外的所有二进制位。
在另一个代表性方面,所公开的技术可以用于提供一种用于可视媒体处理的方法。该方法包括:确定使用来自精度集合的精度作为运动矢量(MVD)的目标精度,其中该MVD被计算为与当前视频块相关联的运动矢量和运动矢量预测值(MVP)之间的差;响应于检测到目标精度不同于MVP的精度,将MVP的精度转换为目标精度;以及在当前视频块的正常帧间模式或仿射帧间模式编解码期间,使用具有目标精度的MVP和MVD来生成重构的运动矢量,其中,重构的运动矢量用于后续视频块的处理。
在又一个代表性方面,所公开的技术可以用于提供一种用于可视媒体处理的方法。该方法包括:在视频块和当前视频块的比特流表示之间的转换期间,识别与当前视频块相关联的运动矢量预测值(MVP)的精度不同于运动矢量差(MVD)的精度,其中该MVD被计算为与当前视频块相关联的MVP和运动矢量之间的差;响应于该检测,将MVD的精度转换为MVP的精度;以及使用MVP的精度来重构与当前视频块相关联的运动矢量,用于处理后续视频块。
在另一个代表性方面,上述方法以处理器可执行代码的形式被体现,并且被存储在计算机可读程序介质中。
在又一个代表性方面,公开了一种被配置或可操作来执行上述方法的设备。该设备可以包括被编程为实施该方法的处理器。
在又一个代表性方面,视频编码器装置可以实施如本文描述的方法。
在又一个代表性方面,视频解码器装置可以实施如本文描述的方法。
在附图、说明书和权利要求书中更详细地描述了所公开的技术的以上以及其它方面和特征。
附图说明
图1示出了构建Merge候选列表的示例。
图2示出了空域候选的位置的示例。
图3示出了对其进行空域Merge候选的冗余检查的候选对的示例。
图4A和4B示出了基于当前块的尺寸和形状的第二预测单元(PredictionUnit,PU)的位置的示例。
图5示出了时域Merge候选的运动矢量缩放的示例。
图6示出了时域Merge候选的候选位置的示例。
图7示出了生成组合的双向预测Merge候选的示例。
图8示出了构建运动矢量预测候选的示例。
图9示出了空域运动矢量候选的运动矢量缩放的示例。
图10示出了使用用于编解码单元(Coding Unit,CU)的可选时域运动矢量预测(Alternative Temporal Motion Vector Prediction,ATMVP)算法的运动预测的示例。
图11示出了空时运动矢量预测(Spatial-Temporal Motion Vector Prediction,STMVP)算法使用的具有子块和邻近块的编解码单元(CU)的示例。
图12A和图12B示出了当使用重叠块运动补偿(Overlapped BlockMotionCompensation,OBMC)算法时子块的示例抓拍。
图13示出了用于推导局部照明补偿(Local Illumination Compensation,LIC)算法的参数的邻近样点的示例。
图14示出了简化的仿射运动模型的示例。
图15示出了每个子块的仿射运动矢量场(Motion Vector Field,MVF)的示例。
图16示出了用于AF_INTER仿射运动模式的运动矢量预测(MotionVectorPrediction,MVP)的示例。
图17A和图17B分别示出了4参数仿射模型和6参数仿射模型的示例。
图18A和图18B示出了AF_MERGE仿射运动模式的示例候选。
图19示出了模式匹配的运动矢量推导(Pattern Matched MotionVectorDerivation,PMMVD)模式中的双边匹配的示例,该模式是基于帧速率上转换(Frame-Rate Up Conversion,FRUC)算法的特定Merge模式。
图20示出了FRUC算法中的模板匹配的示例。
图21示出了FRUC算法中的单边运动估计的示例。
图22示出了双向光流(Bi-directional Optical flow,BIO)算法使用的光流轨迹的示例。
图23A和图23B示出了使用没有块扩展的双向光流(BIO)算法的示例抓拍。
图24示出了基于双边模板匹配的解码器侧运动矢量细化(Decoder-SideMotionVector Refinement,DMVR)算法的示例。
图25示出了用于视频编解码的示例方法的流程图。
图26是用于实施本文档中描述的可视媒体解码或可视媒体编码技术的硬件平台的示例的框图。
图27示出了对称模式的示例。
图28是其中可以实施所公开的技术的示例视频处理系统的框图。
图29示出了用于视频处理的示例方法的流程图。
图30示出了用于视频处理的示例方法的流程图。
图31示出了用于视频处理的示例方法的流程图。
具体实施方式
由于对更高分辨率视频的日益增长的需求,视频编解码方法和技术在现代技术中无处不在。视频编解码器通常包括压缩或解压缩数字视频的电子电路或软件,并且正在不断被改进以提供更高的编解码效率。视频编解码器将未压缩的视频转换为压缩格式,反之亦然。视频质量、用于表示视频的数据量(由比特率确定)、编码和解码算法的复杂度、对数据丢失和错误的敏感性、编辑的简便性、随机访问和端到端延迟(时延)之间存在复杂的关系。压缩格式通常符合标准视频压缩规范,例如高效视频编解码(HEVC)标准(也被称为H.265或MPEG-H Part 2)、待最终确定的通用视频编解码标准或其它当前和/或未来的视频编解码标准。
所公开的技术的实施例可以被应用于现有的视频编解码标准(例如,HEVC、H.265)和未来的标准,以提高压缩性能。在本文档中使用章节标题来提高描述的可读性,并且不以任何方式将讨论或实施例(和/或实施方式)仅限制于各个章节。
1.HEVC/H.265中的帧间预测的示例
近年来,视频编解码标准有了显著的改进,并且目前部分地提供了高编解码效率和对更高分辨率的支持。最近的标准诸如HEVC和H.265是基于混合视频编解码结构的,其中了利用时域预测加变换编解码。
1.1预测模式的示例
每个帧间预测的PU(预测单元)具有一个或两个参考图片列表的运动参数。在一些实施例中,运动参数包括运动矢量和参考图片索引。在其它实施例中,两个参考图片列表之一的使用也可以使用inter_pred_idc来信令通知。在又一些其它实施例中,运动矢量可以被显式地编解码为相对于预测值的增量(delta)。
当用跳过模式对CU进行编解码时,一个PU与CU相关联,并且没有重要残差系数,没有编解码的运动矢量增量或参考图片索引。指定Merge模式,由此从包括空域和时域候选的邻近PU获得当前PU的运动参数。Merge模式可以被应用于任何帧间预测的PU,而不仅仅是针对跳过模式。Merge模式的替代方案是运动参数的显式传输,其中运动矢量、每个参考图片列表的对应参考图片索引和参考图片列表使用按每PU被显式地信令通知。
当信令指示将使用两个参考图片列表之一时,从一个样点块中产生PU。这被称为“单向预测”。单向预测适用于P条带和B条带两者。
当信令指示将使用两个参考图片列表时,从两个样点块产生PU。这被称为“双向预测”。双向预测仅适用于B条带。
1.1.1构建Merge模式的候选的实施例
当使用Merge模式预测PU时,从比特流中解析指向Merge候选列表中的条目的索引,并用于检索运动信息。该列表的构建可以根据以下步骤序列进行总结:
步骤1:初始候选推导
步骤1.1:空域候选推导
步骤1.2:空域候选的冗余检查
步骤1.3:时域候选推导
步骤2:附加候选插入
步骤2.1:创建双向预测候选
步骤2.2:插入零运动候选
图1示出了基于上面总结的步骤序列构建Merge候选列表的示例。对于空域Merge候选推导,在位于五个不同位置的候选当中选择最多四个Merge候选。对于时域Merge候选推导,在两个候选当中选择最多一个Merge候选。由于在解码器处假设每个PU的候选数量是恒定的,所以在候选数量没有达到在条带头中信令通知的最大Merge候选数量(MaxNumMergeCand)时生成附加候选。由于候选数量是恒定的,所以最佳Merge候选的索引使用截断的一元二值化(Truncated Unary binarization,TU)来编码。如果CU的尺寸等于8,则当前CU的所有PU共享单个Merge候选列表,这与2N×2N预测单元的Merge候选列表相同。
1.1.2构建空域Merge候选
在空域Merge候选的推导中,在位于图2中描绘的位置的候选当中选择最多四个Merge候选。推导的顺序是A1、B1、B0、A0和B2。仅当位置A1、B1、B0、A0的任何PU不可用(例如,因为它属于另一条带或片)或是帧内编解码的时,才考虑位置B2。在位置A1处的候选被添加之后,剩余候选的添加经受冗余检查,该冗余检查确保具有相同运动信息的候选被排除在列表之外,使得编解码效率被提高。
为了降低计算复杂度,在所提到的冗余检查中没有考虑所有可能的候选对。相反,仅考虑在图3中用箭头链接的对,并且仅当用于冗余检查的候选不具有相同的运动信息时,才向列表添加对应候选。重复运动信息的另一源是与不同于2N×2N的分割相关联的“第二PU”。作为示例,图4A和图4B分别描绘了N×2N和2N×N的情况下的第二PU。当当前PU被分割为N×2N时,位置A1处的候选不被考虑用于列表构建。在一些实施例中,添加该候选可能导致两个预测单元具有相同的运动信息,这对于在编解码单元中仅具有一个PU是冗余的。类似地,当当前PU被分割为2N×N时,不考虑位置B1
1.1.3构建时域Merge候选
在该步骤中,只有一个候选被添加到列表中。具体地,在该时域Merge候选的推导中,基于属于与给定参考图片列表内的当前图片具有最小POC差的图片的并置PU来推导缩放的运动矢量。在条带头中显式地信令通知将用于推导并置PU的参考图片列表。
图5示出了时域Merge候选的缩放的运动矢量的推导的示例(如虚线所示),该运动矢量是使用POC距离tb和td从并置PU的运动矢量缩放的,其中tb被定义为当前图片的参考图片和当前图片之间的POC差,并且td被定义为并置图片的参考图片和并置图片之间的POC差。时域Merge候选的参考图片索引被设置为等于零。对于B条带,获得两个运动矢量,一个用于参考图片列表0,另一个用于参考图片列表1,并将其组合以形成双向预测Merge候选。
如图6中所描绘的,在属于参考帧的并置PU(Y)中,在候选C0和C1之间选择时域候选的位置。如果位置C0处的PU不可用、是帧内编解码的或在当前CTU之外,则使用位置C1。否则,在时域Merge候选的推导中使用位置C0
1.1.4构建附加类型的Merge候选
除了空时Merge候选之外,还有两种附加类型的Merge候选:组合的双向预测Merge候选和零Merge候选。组合的双向预测Merge候选通过利用空时Merge候选而生成。组合的双向预测Merge候选仅用于B条带。组合的双向预测候选通过将初始候选的第一参考图片列表运动参数与另一个的第二参考图片列表运动参数进行组合而生成。如果这两个元组提供不同的运动假设,则它们将形成新的双向预测候选。
图7示出了该过程的示例,其中原始列表(710,在左侧)中的具有mvL0和refIdxL0或mvL1和refIdxL1的两个候选用于创建添加到最终列表(720,在右侧)的组合的双向预测Merge候选。
零运动候选被插入以填充Merge候选列表中的剩余条目,并因此达到MaxNumMergeCand容量。这些候选具有零空域位移和参考图片索引,该参考图片索引从零开始,并且每当新的零运动候选被添加到该列表时就增加。这些候选使用的参考帧的数量分别是单向预测一个和双向预测两个。在一些实施例中,不对这些候选执行冗余检查。
1.1.5用于并行处理的运动估计区域的示例
为了加速编码过程,可以并行执行运动估计,从而同时推导给定区域内所有预测单元的运动矢量。从空域邻居推导Merge候选可能干扰并行处理,因为一个预测单元不能从相邻的PU推导运动参数,直到其相关联的运动估计完成。为了减轻编解码效率和处理时延之间的折衷,可以定义运动估计区域(Motion Estimation Region,MER)。可以使用“log2_parallel_merge_level_minus2”语法元素在图片参数集(PictureParameter Set,PPS)中信令通知MER的尺寸。当定义了MER时,落入相同区域中的Merge候选被标记为不可用,因此不在列表构建中考虑。
1.2高级运动矢量预测(Advanced Motion Vector Prediction,AMVP)的实施例
AMVP利用运动矢量与邻近PU的空时相关性,其用于运动参数的显式传输。通过首先检查左侧、上侧时域邻近PU位置的可用性、移除冗余候选、以及添加零矢量以使候选列表长度恒定,来构建运动矢量候选列表。然后,编码器可以从候选列表选择最佳预测值,并发送指示所选择的候选的对应索引。类似于Merge索引信令,最佳运动矢量候选的索引使用截断一元编码。在这种情况下,要编码的最大值是2(参见图8)。在以下章节中,提供了关于运动矢量预测候选的推导过程的细节。
1.2.1构建运动矢量预测候选的示例
图8总结了运动矢量预测候选的推导过程,并且可以针对以refidx作为输入的每个参考图片列表而实施。
在运动矢量预测中,考虑两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。对于空域运动矢量候选推导,基于位于如先前图2中所示的五个不同位置的每个PU的运动矢量来最终推导两个运动矢量候选。
对于时域运动矢量候选推导,从两个候选选择一个运动矢量候选,这两个候选是基于两个不同的并置位置而推导的。在生成第一个空时候选列表之后,移除列表中的重复运动矢量候选。如果潜在候选的数量大于2,则从相关联的参考图片列表移除列表内参考图片索引大于1的运动矢量候选。如果空时运动矢量候选的数量小于两个,则将附加的零运动矢量候选添加到列表中。
1.2.2构建空域运动矢量候选
在空域运动矢量候选的推导中,在五个潜在候选当中考虑最多两个候选,这五个潜在候选是从位于如先前图2中所示的位置的PU推导的,这些位置与运动Merge的位置相同。当前PU左侧的推导顺序被定义为A0、A1和缩放的A0、缩放的A1。当前PU的上侧的推导顺序被定义为B0、B1、B2、缩放的B0、缩放的B1、缩放的B2。因此,对于每一侧,有四种情况可以用作运动矢量候选,其中两种情况不需要使用空域缩放,两种情况使用空域缩放。这四种不同的情况总结如下:
--无空域缩放
(1)相同的参考图片列表和相同的参考图片索引(相同的POC)
(2)不同的参考图片列表但相同的参考图片(相同的POC)
--空域缩放
(3)相同的参考图片列表但不同的参考图片(不同的POC)
(4)不同的参考图片列表和不同的参考图片(不同的POC)
首先检查无空域缩放情况,随后检查允许空域缩放的情况。不管参考图片列表如何,当邻近PU的参考图片和当前PU的参考图片之间的POC不同时,考虑空域缩放。如果左侧候选的所有PU都不可用或者是帧内编解码的,则允许对上侧运动矢量进行缩放,以帮助左侧和上侧MV候选的并行推导。否则,不允许对上侧运动矢量进行空域缩放。
如图9中的示例所示,对于空域缩放情况,以与时域缩放类似的方式缩放邻近PU的运动矢量。一个不同之处在于,参考图片列表和当前PU的索引作为输入被给出;实际缩放过程与时域缩放的缩放过程相同。
1.2.3构建时域运动矢量候选
除了参考图片索引推导之外,用于推导时域Merge候选的所有过程与用于推导空域运动矢量候选的过程相同(如图6中的示例所示)。在一些实施例中,参考图片索引被信令通知给解码器。
2.联合探索模型(JEM)中的帧间预测方法的示例
在一些实施例中,使用被称为联合探索模型(Joint Exploration Model,JEM)的参考软件来探索将来的视频编解码技术。在JEM中,基于子块的预测在几种编解码工具中被采用,诸如仿射预测、可选时域运动矢量预测、空时运动矢量预测、双向光流(BIO)、帧速率上转换(FRUC)、局部自适应运动矢量分辨率(Locally Adaptive Motion VectorResolution,LAMVR)、重叠块运动补偿(OBMC)、局部照明补偿(LIC)和解码器侧运动矢量细化(DMVR)。
2.1基于子CU的运动矢量预测的示例
在具有四叉树加二叉树(QuadTrees plus Binary Trees,QTBT)的JEM中,每个CU对于每个预测方向可以具有最多一个运动参数集。在一些实施例中,通过将大CU划分为子CU并推导大CU的所有子CU的运动信息,在编码器中考虑了两种子CU级别运动矢量预测方法。可选时域运动矢量预测(ATMVP)方法允许每个CU从比并置参考图片中的当前CU小的多个块获取多个运动信息集合。在空时运动矢量预测(STMVP)方法中,通过使用时域运动矢量预测值和空域邻近运动矢量递归地推导子CU的运动矢量。在一些实施例中,为了为子CU运动预测保留更准确的运动场,可以禁用参考帧的运动压缩。
2.1.1可选时域运动矢量预测(ATMVP)的示例
在ATMVP方法中,时域运动矢量预测(TMVP)方法通过从小于当前CU的块获取多个运动信息集合(包括运动矢量和参考索引)而修改。
图10示出了用于CU 1000的ATMVP运动预测过程的示例。ATMVP方法分两个步骤预测CU 1000内的子CU 1001的运动矢量。第一步骤是用时域矢量标识参考图片1050中的对应块1051。参考图片1050也被称为运动源图片。第二步骤是将当前CU 1000划分为子CU 1001,并从对应于每个子CU的块获得每个子CU的运动矢量和参考索引。
在第一步骤中,参考图片1050和对应块由当前CU 1000的空域邻近块的运动信息确定。为了避免邻近块的重复扫描过程,使用当前CU 1000的Merge候选列表中的第一个Merge候选。第一个可用运动矢量及其相关联的参考索引被设置为运动源图片的时域矢量和索引。这样,与TMVP相比,可以更准确地标识对应块,其中对应块(有时被称为并置块)总是在相对于当前CU的右下方或中心位置。
在第二步骤中,通过将时域矢量添加到当前CU的坐标,子CU 1051的对应块由运动源图片1050中的时域矢量标识。对于每个子CU,其对应块的运动信息(例如,覆盖中心样点的最小运动网格)用于推导子CU的运动信息。在对应的N×N块的运动信息被标识之后,它被转换为当前子CU的运动矢量和参考索引,其方式与HEVC的TMVP相同,其中应用了运动缩放和其它流程。例如,解码器检查是否满足低延迟条件(例如,当前图片的所有参考图片的POC小于当前图片的POC),并且可能使用运动矢量MVx(例如,对应于参考图片列表X的运动矢量)来预测每个子CU的运动矢量MVy(例如,其中X等于0或1,并且Y等于1-X)。
2.1.2空时运动矢量预测(STMVP)的示例
在STMVP方法中,子CU的运动矢量按照光栅扫描顺序被递归地推导。图11示出了具有四个子块的一个CU和邻近块的示例。考虑8×8CU 1100,其包括四个4×4子CU A(1101)、B(1102)、C(1103)和D(1104)。当前帧中的邻近4×4块被标记为a(1111)、b(1112)、c(1113)和d(1114)。
子CU A的运动推导从标识其两个空域邻居开始。第一个邻居是子CU A 1101上侧的N×N块(块c 1113)。如果该块c(1113)不可用或是帧内编解码的,则检查子CU A(1101)上侧的其它N×N块(从左到右,从块c 1113处开始)。第二个邻居是子CU A 1101左侧的块(块b1112)。如果块b(1112)不可用或是帧内编解码的,则检查子CU A 1101左侧的其它块(从上到下,从块b 1112处开始)。从每个列表的邻近块获得的运动信息被缩放到给定列表的第一参考帧。接下来,子块A 1101的时域运动矢量预测值(TMVP)通过遵循与HEVC中指定的TMVP推导相同的流程而推导。块D 1104处的并置块的运动信息被相应地获取和缩放。最后,在检索和缩放运动信息之后,针对每个参考列表分开对所有可用运动矢量进行平均。平均运动矢量被指定为当前子CU的运动矢量。
2.1.3子CU运动预测模式信令的示例
在一些实施例中,子CU模式被启用作为附加Merge候选,并且不需要附加的语法元素来信令通知这些模式。两个附加Merge候选被添加到每个CU的Merge候选列表中,以表示ATMVP模式和STMVP模式。在其它实施例中,如果序列参数集指示ATMVP和STMVP被启用,则可以使用多达七个Merge候选。附加Merge候选的编码逻辑与HM中的Merge候选的编码逻辑相同,这意味着,对于P条带或B条带中的每个CU,两个附加Merge候选可能还需要两次RD检查。在一些实施例中,例如JEM,Merge索引的所有二进制位(bin)通过CABAC(Context-basedAdaptive Binary Arithmetic Coding,基于上下文的自适应二进制算术编解码)进行上下文编解码。在其它实施例中,例如HEVC,只有第一二进制位被上下文编解码,而剩余的二进制位被上下文旁路编解码。
2.2自适应运动矢量差分辨率的示例
在一些实施例中,当条带头中use_integer_mv_flag等于0时,以四分之一亮度样点为单位信令通知(PU的运动矢量和预测运动矢量之间的)运动矢量差(MVD)。在JEM中,引入了局部自适应运动矢量分辨率(LAMVR)。在JEM中,MVD可以以四分之一亮度样点、整数亮度样点或四亮度样点为单位进行编解码。MVD分辨率在编解码单元(CU)级别被控制,并且对于具有至少一个非零MVD分量的每个CU,有条件地信令通知MVD分辨率标志。
对于具有至少一个非零MVD分量的CU,信令通知第一标志以指示CU中是否使用四分之一亮度样点MV精度。当第一标志(等于1)指示没有使用四分之一亮度样点MV精度时,另一标志被信令通知以指示是使用整数亮度样点MV精度还是四亮度样点MV精度。
当CU的第一MVD分辨率标志为零,或未针对CU进行编解码(意味着CU中的所有MVD都为零)时,CU使用四分之一亮度样点MV分辨率。当CU使用整数亮度样点MV精度或四亮度样点MV精度时,CU的AMVP候选列表中的MVP被取整到对应的精度。
在编码器中,CU级别RD检查用于确定将对CU使用哪个MVD分辨率。也就是说,对每个MVD分辨率执行三次CU级别RD检查。为了加快编码器速度,JEM中应用了以下编码方案:
--在具有正常四分之一亮度样点MVD分辨率的CU的RD检查期间,存储当前CU的运动信息(整数亮度样点精确度)。在对具有整数亮度样点和4亮度样点MVD分辨率的相同CU进行RD检查期间,存储的运动信息(取整之后)被用作进一步小范围运动矢量细化的起始点,使得耗时的运动估计过程不被重复三次。
--有条件地调用具有4亮度样点MVD分辨率的CU的RD检查。对于CU,当整数亮度样点MVD分辨率的RD代价远大于四分之一亮度样点MVD分辨率的RD代价时,将跳过CU的4亮度样点MVD分辨率的RD检查。
2.3更高的运动矢量存储精确度的示例
在HEVC中,运动矢量精确度为四分之一像素(4:2:0视频的四分之一亮度样点和八分之一色度样点)。在JEM中,内部运动矢量存储和Merge候选的精确度增加到1/16像素。更高的运动矢量精确度(1/16像素)用于用跳过/Merge模式编解码的CU的运动补偿帧间预测。对于用正常AMVP模式编解码的CU,使用整数像素或四分之一像素运动。
SHVC上采样插值滤波器,其具有与HEVC运动补偿插值滤波器相同的滤波器长度和归一化因子,被用作附加的分数像素位置的运动补偿插值滤波器。在JEM中,色度分量运动矢量精确度是1/32样点,1/32像素分数位置的附加的插值滤波器是通过使用两个邻近的1/16像素分数位置的滤波器的平均得到的。
2.4重叠块运动补偿(OBMC)的示例
在JEM中,可以使用CU级别的语法来打开和关闭OBMC。当在JEM中使用OBMC时,对除CU的右边界和下边界之外的所有运动补偿(MotionCompensation,MC)块边界执行OBMC。此外,它适用于亮度分量和色度分量两者。在JEM中,MC块与编解码块相对应。当用子CU模式(包括子CUMerge、仿射和FRUC模式)对CU进行编解码时,CU的每个子块都是MC块。为了以统一的方式处理CU边界,在子块级别对所有的MC块边界执行OBMC,其中子块尺寸被设置为等于4×4,如图12A和图12B所示。
图12A示出了CU/PU边界处的子块,并且阴影子块是应用了OBMC的地方。类似地,图12B示出了ATMVP模式中的子PU。
当OBMC应用于当前子块时,除了当前运动矢量之外,四个连接的邻近子块的运动矢量(如果可用并且与当前运动矢量不相同)也用于推导当前子块的预测块。基于多个运动矢量的这些多个预测块被组合以生成当前子块的最终预测信令。
基于邻近子块的运动矢量的预测块被表示为PN,其中N表示邻近的上方、下方、左侧和右侧子块的索引,并且基于当前子块的运动矢量的预测块被表示为PC。当PN基于包含与当前子块相同的运动信息的邻近子块的运动信息时,不从PN执行OBMC。否则,每一个PN的样点都被添加到PC中的相同样点,即,四行/列PN被添加到PC。加权因子{1/4,1/8,1/16,1/32}用于PN,加权因子{3/4,7/8,15/16,31/32}用于PC。例外的是小MC块(即,当编解码块的高度或宽度等于4或者CU是用子CU模式进行编解码的时),对于这些小MC块,只有两行/列PN被添加到PC。在这种情况下,加权因子{1/4,1/8}用于PN,加权因子{3/4,7/8}用于PC。对于基于垂直(水平)邻近子块的运动矢量生成的PN,PN的相同行(列)中的样点以相同的加权因子被添加到PC。
在JEM中,对于尺寸小于或等于256个亮度样点的CU,信令通知CU级别标志以指示是否对当前CU应用了OBMC。对于尺寸大于256个亮度样点或未用AMVP模式编解码的CU,默认应用了OBMC。在编码器处,当OBMC被应用于CU时,其影响在运动估计阶段被考虑。通过OBMC使用上方邻近块和左侧邻近块的运动信息形成的预测信令用于补偿当前CU的原始信令的上边界和左边界,然后应用正常运动估计过程。
2.5局部照明补偿(LIC)的示例
LIC基于照明变化的线性模型,使用缩放因子a和偏移b。并且其对于每个帧间模式编解码的编解码单元(CU)自适应地启用或禁用。
当LIC应用于PU时,采用最小二乘法通过使用当前CU的邻近样点及其对应的参考样点来推导参数a和b。图13示出了用于推导IC算法的参数的邻近样点的示例。具体地,如图13所示,使用CU的二次采样的(2:1二次采样)邻近样点和参考图片中的对应样点(由当前CU或子CU的运动信息标识)。分别对每个预测方向推导和应用IC参数。
当用Merge模式对CU进行编解码时,以类似于Merge模式中的运动信息复制的方式,从邻近块复制LIC标志;否则,LIC标志被信令通知给CU以指示LIC是否适用。
当对图片启用LIC时,需要附加的CU级别RD检查来确定LIC是否适用于CU。当对CU启用LIC时,绝对差的均值移除和(Mean-Removed Sumof Absolute Difference,MR-SAD)和绝对哈达玛变换差的均值移除和(Mean-Removed Sum of Absolute Hadamard-Transformed Difference,MR-SATD),而不是SAD和SATD,被分别用于整数像素运动搜索和分数像素运动搜索。
为了降低编码复杂度,在JEM中应用以下编码方案:
--当当前图片与其参考图片之间没有明显的照明变化时,对整个图片禁用LIC。为了标识这种情况,在编码器处计算当前图片和当前图片的每个参考图片的直方图。如果当前图片和当前图片的每个参考图片之间的直方图差小于给定阈值,则对当前图片禁用LIC;否则,对当前图片启用LIC。
2.6仿射运动补偿预测的示例
在HEVC,只有平移运动模型被应用于运动补偿预测(MotionCompensationPrediction,MCP)。然而,相机和对象可以具有多种运动,例如放大/缩小、旋转、透视运动和/或其它不规则运动。另一方面,JEM应用简化的仿射变换运动补偿预测。图14示出了由两个控制点运动矢量V0和V1描述的块1400的仿射运动场的示例。块1400的运动矢量场(MVF)可以由以下等式来描述:
如图14所示,(v0x,v0y)是左上角控制点的运动矢量,(v1x,v1y)是右上角控制点的运动矢量。为了简化运动补偿预测,可以应用基于子块的仿射变换预测。子块尺寸M×N推导如下:
这里,MvPre是运动矢量分数精确度(例如,在JEM中为1/16)。(v2x,v2y)是左下角控制点的运动矢量,根据等式1计算。如果需要,M和N可以向下调整,使其分别为w和h的除数。
图15示出了块1500的每个子块的仿射MVF的示例。为了推导每个M×N子块的运动矢量,可以根据等式1计算每个子块的中心样点的运动矢量,并将其取整到运动矢量分数精确度(例如,在JEM中为1/16)。然后,可以应用运动补偿插值滤波器来生成具有推导的运动矢量的每个子块的预测。在MCP之后,每个子块的高精确度运动矢量被取整并被保存为与正常运动矢量相同的精确度。
2.6.1 AF_INTER模式的实施例
在JEM中,有两种仿射运动模式:AF_INTER模式和AF_MERGE模式。对于宽度和高度都大于8的CU,可以应用AF_INTER模式。在比特流中信令通知CU级别的仿射标志,以指示是否使用AF_INTER模式。在AF_INTER模式中,使用邻近块构建具有运动矢量对{(v0,v1)|v0={vA,vB,vc},v1={vD,vE}}的候选列表。
图16示出了AF_INTER模式中的块1600的运动矢量预测(MVP)的示例。如图16所示,从子块A、B或C的运动矢量中选择v0。可以根据参考列表来缩放来自邻近块的运动矢量。还可以根据邻近块的参考的图片顺序计数(Picture Order Count,POC)、当前CU的参考的POC和当前CU的POC之间的关系来缩放运动矢量。从邻近子块D和E中选择v1的方法类似。如果候选列表的数量小于2,则列表由通过重复每个AMVP候选而组成的运动矢量对填充。当候选列表大于2时,可以首先根据邻近运动矢量(例如,基于对候选中两个运动矢量的相似性)来对候选进行排序。在一些实施方式中,保留前两个候选。在一些实施例中,使用率失真(RateDistortion,RD)代价检查来确定哪个运动矢量对候选被选择作为当前CU的控制点运动矢量预测(Control Point Motion Vector Prediction,CPMVP)。指示候选列表中的CPMVP的位置的索引可以在比特流中信令通知。在确定当前仿射CU的CPMVP之后,应用仿射运动估计,并且找到控制点运动矢量(Control Point Motion Vector,CPMV)。然后,在比特流中信令通知CPMV和CPMVP的差。
在AF_INTER模式中,当使用4/6参数仿射模式时,需要2/3个控制点,因此需要为这些控制点编解码2/3MVD,如图17所示。在现有实施方式中,可以如下推导MV,例如,它从mvd0预测mvd1和mvd2。
这里,mvdi和mv1分别是左上方像素(i=0)、右上方像素(i=1)或左下方像素(i=2)的预测运动矢量、运动矢量差和运动矢量,如图18B所示。在一些实施例中,两个运动矢量(例如,mvA(xA,yA)和mvB(xB,yB))的相加等于两个分量的分别求和。例如,newMV=mvA+mvB意味着newMV的两个分量被分别设置为(xA+xB)和(yA+yB)。
2.6.2 AF_INTER模式中的快速仿射ME算法的示例
在仿射模式的一些实施例中,需要共同确定2个或3个控制点的MV。直接共同搜索多个MV计算复杂。在示例中,快速仿射ME算法用于VTM/BMS。
例如,针对4参数仿射模型描述了快速仿射ME算法,并且该思想可以扩展到6参数仿射模型:
用a’替换(a-1)使得运动矢量能够被重写为:
如果假设两个控制点(0,0)和(0,w)的运动矢量是已知的,则根据等式(5)仿射参数可以被推导为:
运动矢量可以以矢量形式被重写为:
这里,P=(x,y)是像素位置,
在一些实施例中,在编码器处,可以迭代地推导AF_INTER的MVD。将MVi(P)表示为在位置P的第i次迭代中推导的MV,并将dMVC i表示为在第i次迭代中为MVC更新的增量。然后在第(i+1)次迭代中,
将Picref表示为参考图片,将Piccur表示为当前图片,并表示Q=P+MVi(P)。如果MSE用作匹配标准,则需要最小化的函数可以写为:
如果假设足够小,则/>可以作为基于一阶泰勒展开的近似被重写为:
这里,如果采用符号Ei+1(P)=Piccur(P)-Picref(Q),则:
可以通过将误差函数的导数设置为零来推导,然后根据/> 计算控制点(0,0)和(0,w)的增量MV,如下:
在一些实施例中,该MVD推导过程可以迭代n次,并且最终的MVD可以计算如下:
/>
在前述实施方式中,从由mvd0表示的控制点(0,0)的增量MV预测由mvd1表示的控制点(0,w)的增量MV,导致仅对mvd1编码
2.6.3 AF_MERGE模式的实施例
当CU被应用在AF_MERGE模式下时,它从有效的邻近重构块获得以仿射模式进行编解码的第一块。图18A示出了当前CU 1800的候选块的选择顺序的示例。如图18A所示,选择顺序可以是从当前CU 1800的左侧(1801)、上方(1802)、右上方(1803)、左下方(1804)到左上方(1805)。图18B示出了在AF_MERGE模式下当前CU 1800的候选块的另一示例。如果邻近左下块1801以仿射模式编解码,如图18B所示,则包含子块1801的CU的左上角、右上角和左下角的运动矢量v2、v3和v4被推导。基于v2、v3和v4计算当前CU 1800上的左上角的运动矢量v0。可以相应地计算当前CU的右上方的运动矢量v1
在根据等式1中的仿射运动模型计算当前CU的CPMV v0和v1之后,可以生成当前CU的MVF。为了标识当前CU是否用AF_MERGE模式编解码,当至少有一个邻近块以仿射模式编解码时,可以在比特流中信令通知仿射标志。
2.7模式匹配的运动矢量推导(PMMVD)的示例
PMMVD模式是一种基于帧速率上转换(FRUC)方法的特定Merge模式。在这种模式下,块的运动信息不被信令通知,而是在解码器侧推导。
当CU的Merge标志为真(true)时,可以为CU信令通知FRUC标志。当FRUC标志为假(false)时,可以信令通知Merge索引,并使用常规Merge模式。当FRUC标志为真时,可以信令通知附加的FRUC模式标志,以指示将使用哪种方法(例如,双边匹配或模板匹配)来推导块的运动信息。
在编码器侧,是否对CU使用FRUC Merge模式的决定是基于如针对正常Merge候选做出的RD代价选择而做出的。例如,通过使用RD代价选择来对CU检查多个匹配模式(例如,双边匹配和模板匹配)。导致最小代价的模式进一步与其它CU模式进行比较。如果FRUC匹配模式是最有效的模式,则将CU的FRUC标志设置为真,并使用相关的匹配模式。
通常,FRUC Merge模式中的运动推导过程有两个步骤:首先执行CU级别运动搜索,然后是子CU级别运动细化。在CU级别,基于双边匹配或模板匹配为整个CU推导初始运动矢量。首先,生成MV候选的列表,并选择导致最小匹配代价的候选作为用于进一步的CU级别细化的起始点。然后执行在起始点周围的基于双边匹配或模板匹配的局部搜索。导致最小匹配代价的MV被作为整个CU的MV。随后,以推导的CU运动矢量作为起始点,在子CU级别进一步细化运动信息。
例如,针对W×HCU运动信息推导执行以下推导过程。在第一阶段,推导整个W×HCU的MV。在第二阶段,CU被进一步划分为M×M子CU。M的值如(16)所示计算,D是预定义的划分深度,在JEM中默认设置为3。然后推导每个子CU的MV。
/>
图19示出了在帧速率上转换(FRUC)方法中使用的双边匹配的示例。双边匹配用于通过在两个不同的参考图片(1910、1911)中沿着当前CU(1900)的运动轨迹找到两个块之间的最接近匹配来推导当前CU的运动信息。在连续运动轨迹的假设下,指向两个参考块的运动矢量MV0(1901)和MV1(1902)与当前图片和两个参考图片之间的时域距离(例如,TD0(1903)和TD1(1904))成比例。在一些实施例中,当当前图片1900在时域上在两个参考图片(1910、1911)之间并且从当前图片到两个参考图片的时域距离相同时,双边匹配变成基于镜像的双向MV。
图20示出了在帧速率上转换(FRUC)方法中使用的模板匹配的示例。模板匹配可以用于通过在当前图片中的模板(例如,当前CU的上方和/或左侧邻近块)和参考图片2010中的块(例如,与模板尺寸相同)之间找到最接近匹配来推导当前CU 2000的运动信息。除了前述的FRUC Merge模式,模板匹配也可以被应用于AMVP模式。在JEM和HEVC两者中,AMVP都具有两个候选。使用模板匹配方法,可以推导新的候选。如果通过模板匹配新推导的候选与第一个现有AMVP候选不同,则它被插入到AMVP候选列表的最开始,然后列表尺寸被设置为二(例如,通过移除第二个现有AMVP候选)。当应用于AMVP模式时,仅应用CU级别搜索。
CU级别的MV候选集可以包括以下:(1)原始AMVP候选(如果当前CU处于AMVP模式),(2)所有Merge候选,(3)插值的MV场(稍后描述)中的几个MV,以及上和左侧邻近运动矢量。
当使用双边匹配时,Merge候选的每个有效MV可以用作输入,以生成双边匹配的假设下的MV对。例如,Merge候选的一个有效MV是参考列表A处的(MVa,refa)。然后,在另一参考列表B中找到其配对的双边MV的参考图片refb,使得refa和refb在时域上处于当前图片的不同侧。如果在参考列表B中没有这样的refb,则refb被确定为不同于refa并且其到当前图片的时域距离是列表B中最小的一个的参考。在refb被确定之后,通过基于当前图片和refa、refb之间的时域距离缩放MVa来推导MVb。
在一些实施方式中,来自插值的MV场的四个MV也可以被添加到CU级别候选列表。更具体地,添加当前CU的位置(0,0)、(W/2,0)、(0,H/2)和(W/2,H/2)处的插值的MV。当在AMVP模式中应用FRUC时,原始AMVP候选也被添加到CU级别MV候选集中。在一些实施方式中,在CU级别,AMVP CU的15个MV和Merge CU的13个MV可以被添加到候选列表。
子CU级别的MV候选集包括从CU级别搜索确定的MV,(2)顶部、左侧、左上方和右上方邻近MV,(3)来自参考图片的并置MV的缩放版本,(4)一个或多个ATMVP候选(例如,多达四个),以及(5)一个或多个STMVP候选(例如,多达四个)。来自参考图片的缩放的MV推导如下。遍历两个列表中的参考图片。参考图片中的子CU的并置位置处的MV被缩放到起始的CU级别MV的参考。ATMVP和STMVP候选可以是前四个。在子CU级别,一个或多个MV(例如,多达17个)被添加到候选列表中。
插值的MV场的生成。在对帧进行编解码之前,基于单边ME为整个图片生成插值的运动场。然后,该运动场可以稍后被用作CU级别或子CU级别的MV候选。
在一些实施例中,在4×4块级别遍历两个参考列表中的每个参考图片的运动场。图21示出了FRUC方法中的单边运动估计(ME)2100的示例。对于每个4×4块,如果与穿过当前图片中的4×4块的块相关联的运动以及该块没有被分配任何插值运动,则根据时域距离TD0和TD1(与HEVC中的TMVP的MV缩放的方式相同)将参考块的运动缩放到当前图片,并且将缩放的运动分配给当前帧中的块。如果没有缩放的MV被分配给4×4块,则该块的运动在插值的运动场中被标记为不可用。
插值和匹配代价。当运动矢量指向分数样点位置时,需要运动补偿插值。为了降低复杂度,双边匹配和模板匹配都可以使用双线性插值而不是常规的8抽头HEVC插值。
匹配代价的计算在不同的步骤处有所不同。当从CU级别的候选集合中选择候选时,匹配代价可以是双边匹配或模板匹配的绝对和差(Absolute SumDifference,SAD)。在确定起始MV之后,子CU级别搜索的双边匹配的匹配代价C计算如下:
这里,w是加权因子。在一些实施例中,w可以根据经验设置为4。MV和MVs分别表示当前MV和起始MV。SAD仍可以用作子CU级别搜索的模板匹配的匹配代价。
在FRUC模式中,MV仅通过使用亮度样点推导。推导的运动将用于MC帧间预测的亮度和色度两者。在决定MV之后,对亮度使用8抽头插值滤波器并且对色度使用4抽头插值滤波器来执行最终MC。
MV细化是一种基于模式的MV搜索,以双边匹配代价或模板匹配代价为准则。在JEM中,支持两种搜索模式——不受限制的中心偏向菱形搜索(Unrestricted Center-BiasedDiamond Search,UCBDS)和自适应交叉搜索,分别用于CU级别和子CU级别的MV细化。对于CU和子CU级别两者的MV细化,直接以四分之一亮度样点MV精确度搜索MV,然后进行八分之一亮度样点MV细化。CU和子CU的MV细化的搜索范围的步长设置为等于8个亮度样点。
在双边匹配Merge模式中,应用双向预测,因为CU的运动信息是基于两个不同参考图片中沿着当前CU的运动轨迹的两个块之间的最接近匹配而推导的。在模板匹配Merge模式中,编码器可以在来自列表0的单向预测、来自列表1的单向预测或双向预测当中为CU进行选择。选择可以基于模板匹配代价,如下所示:
如果costBi<=factor*min(cost0,cost1)
使用双向预测;
否则,如果cost0<=cost1
使用来自列表0的单向预测;
否则,
使用来自列表1的单向预测;
这里,cost0是列表0模板匹配的SAD,cost1是列表1模板匹配的SAD,并且costBi是双向预测模板匹配的SAD。例如,当因子(factor)的值等于1.25时,这意味着选择过程偏向于双向预测。帧间预测方向选择可以被应用于CU级别模板匹配过程。
2.8双向光流(BIO)的示例
双向光流(BIO)方法是在用于双向预测的逐块运动补偿之上执行的逐样点运动细化。在一些实施方式中,样点级别运动细化不使用信令。
令I(k)为块运动补偿之后来自参考k(k=0,1)的亮度值,并分别用表示I(k)梯度的水平和垂直分量。假设光流有效,则运动矢量场(vx,vy)由下式给出:
/>
将该光流等式与用于每个样点的运动轨迹的埃尔米特(Hermite)插值进行组合,得到与函数值I(k)和各端的导数以及/>都相匹配的唯一的三阶多项式。t=0时,该多项式的值为BIO预测:
图22示出了双向光流(BIO)方法中的示例光流轨迹。这里,τ0和τ1表示到参考帧的距离。距离τ0和τ1基于Ref0和Ref1的POC来计算:τ0=POC(当前)-POC(Ref0),τ1=POC(Ref1)-POC(当前)。如果预测都来自同一时间方向(要么都来自过去,要么都来自未来),那么符号是不同的(例如,τ0·τ1<0)。在这种情况下,如果预测不是来自同一时刻(例如,τ0≠τ1),则应用BIO。两个参考区域都具有非零运动(例如,MVx0、MVy0、MVx1、MVy1≠0),并且块运动矢量与时间距离成比例(例如,MVx0/MVx1=MVy0/MVy1=-τ01)。
运动矢量场(vx,vy)是通过对点A和B中的值之间的差Δ进行最小化来确定的。图9A-图9B示出了运动轨迹和参考帧平面相交的示例。模型仅使用Δ的局部泰勒展开的第一线性项:
上述等式中的所有值取决于样点位置,表示为(i′,j′)。假设运动在局部周围区域是一致的,则Δ可以在以当前预测点(i,j)为中心的(2M+1)×(2M+1)正方形窗口Ω内被最小化,其中M等于2:
对于该优化问题,JEM使用一种简化的方法,首先在垂直方向上最小化,然后在水平方向上最小化。这将导致以下结果:
其中,
为了避免被零或非常小的值相除,正则化参数r和m可以被引入等式28和29中,其中:
r=500·4d-8 (31)
m=700·4d-8 (32)
这里,d是视频样点的比特深度。
为了保持BIO的存储器访问与常规双向预测运动补偿的存储器访问相同,所有预测和梯度值I(k)都是针对当前块内的位置计算的。图23A示出了块2300外部的访问位置的示例。如图23A所示,在等式30中,以预测块边界上的当前预测点为中心的(2M+1)×(2M+1)正方形窗口Ω需要访问块外部的位置。在JEM中,块外部的I(k)的值被设置为等于块内部的最近可用值。例如,这可以被实施为填充区域2301,如图23B所示。
利用BIO,可以为每个样点细化运动场。为了降低计算复杂度,JEM中使用了基于块的BIO设计。可以基于4×4块来计算运动细化。在基于块的BIO中,可以聚合4×4块中的所有样点在等式30中的sn的值,然后使用聚合的sn的值来推导4×4块的BIO运动矢量偏移。更具体地,以下公式可以用于基于块的BIO推导:
这里,bk表示属于预测块的第k个4×4块的样点集。等式28和29中的sn被替换为((sn,bk)>>4)以推导相关联的运动矢量偏移。
在一些情况下,由于噪声或不规则的运动,BIO的MV细化可能不可靠。因此,在BIO中,MV细化的幅度被裁剪到一个阈值。基于当前图片的参考图片是否都来自一个方向来确定阈值。例如,如果当前图片的所有参考图片都来自一个方向,则阈值的值被设置为12×214-d;否则,其被设置为12×213-d
可以使用与HEVC运动补偿过程一致的操作(例如,2D可分离有限脉冲响应(FiniteImpulse Response,FIR))利用运动补偿插值来同时计算BIO的梯度。在一些实施例中,2D可分离FIR的输入是与运动补偿过程的输入相同的参考帧样点和根据块运动矢量的分数部分的分数位置(fracX,fracY)。对于水平梯度首先对应于分数位置fracY以去缩放移位d-8使用BIOfilterS对信令进行垂直插值。然后对应于分数位置fracX以18-d的去缩放移位在水平方向上应用梯度滤波器BIOfilterG。对于垂直梯度/>对应于分数位置fracY以去缩放移位d-8使用BIOfilterG垂直地应用梯度滤波器。然后,对应于分数位置fracX以18-d的去缩放移位在水平方向上使用BIOfilterS来执行信令位移。用于梯度计算(BIOfilterG)和信令位移(BIOfilterF)的插值滤波器的长度可以更短(例如,6抽头),以便维持合理的复杂度。表1示出了可以用于BIO中块运动矢量的不同分数位置的梯度计算的示例滤波器。表2示出了可以用于BIO中预测信令生成的示例插值滤波器。
表1:用于BIO中的梯度计算的示例性滤波器
分数像素位置 用于梯度的插值滤波器(BIOfilterG)
0 {8,-39,-3,46,-17,5}
1/16 {8,-32,-13,50,-18,5}
1/8 {7,-27,-20,54,-19,5}
3/16 {6,-21,-29,57,-18,5}
1/4 {4,-17,-36,60,-15,4}
5/16 {3,-9,-44,61,-15,4}
3/8 {1,-4,-48,61,-13,3}
7/16 {0,1,-54,60,-9,2}
1/2 {-1,4,-57,57,-4,1}
表2:用于BIO中的预测信令生成的示例性插值滤波器
分数像素位置 用于预测信令的插值滤波器(BIOfilterS)
0 {0,0,64,0,0,0}
1/16 {1,-3,64,4,-2,0}
1/8 {1,-6,62,9,-3,1}
3/16 {2,-8,60,14,-5,1}
1/4 {2,-9,57,19,-7,2}
5/16 {3,-10,53,24,-8,2}
3/8 {3,-11,50,29,-9,2}
7/16 {3,-11,44,35,-10,3}
1/2 {3,-10,35,44,-11,3}
在JEM中,当两个预测来自不同的参考图片时,BIO可以被应用于所有双向预测块。当对CU启用局部照明补偿(LIC)时,可以禁用BIO。
在一些实施例中,在正常的MC过程之后,OBMC被应用于块。为了降低计算复杂度,在OBMC过程期间可以不应用BIO。这意味着当使用块自身的MV时,在块的MC过程中应用BIO,而当在OBMC过程期间使用邻近块的MV时,在MC过程中不应用BIO。
2.9解码器侧运动矢量细化(DMVR)的示例
在双向预测操作中,对于一个块区域的预测,分别使用列表0的运动矢量(MV)和列表1的MV形成的两个预测块被组合以形成单个预测信令。在解码器侧运动矢量细化(DMVR)方法中,双向预测的两个运动矢量通过双边模板匹配过程被进一步细化。双边模板匹配被应用于解码器中,以在双边模板和参考图片中的重构样点之间执行基于失真的搜索,以便在不传输附加运动信息的情况下获得细化的MV。
在DMVR中,如图24所示,分别从列表0的初始MV0和列表1的MV1生成双边模板作为两个预测块的加权组合(即,平均)。模板匹配操作包括计算生成的模板和参考图片中的样点区域(初始预测块周围)之间的代价度量。对于两个参考图片中的每一个,产生最小模板代价的MV被认为是该列表的更新的MV,以取代原始的MV。在JEM中,为每个列表搜索九个MV候选。九个MV候选包括原始MV和在水平方向或垂直方向或两个方向上距原始MV一个亮度样点偏移的8个周围MV。最后,如图24所示的两个新的MV,即MV0’和MV1’,用于生成最终的双向预测结果。绝对差和(SAD)被用作代价度量。
DMVR被应用于双向预测的Merge模式(其中一个MV来自过去的参考图片,另一个来自未来的参考图片),而无需传输附加的语法元素。在JEM中,当对CU启用LIC、仿射运动、FRUC或子CU Merge候选时,不应用DMVR。
2.10对称运动矢量差的示例
对称运动矢量差(Symmetric Motion Vector Difference,SMVD)可以用来更有效地编码MVD。
首先,在条带级别,变量BiDirPredFlag、RefIdxSymL0和RefIdxSymL1推导如下:
搜索参考图片列表0中最接近当前图片的前向参考图片。如果找到,则将RefIdxSymL0设置为等于前向图片的参考索引。
搜索参考图片列表1中最接近当前图片的后向参考图片。如果找到,则将RefIdxSymL1设置为等于后向图片的参考索引。
如果前向图片和后向图片都被找到,则将BiDirPredFlag设置为等于1。
否则,以下适用:
搜索参考图片列表0中最接近当前图片的后向参考图片。如果找到,则将RefIdxSymL0设置为等于后向图片的参考索引。
搜索参考图片列表1中最接近当前图片的前向参考图片。如果找到,则将RefIdxSymL1设置为等于前向图片的参考索引。
如果前向图片和后向图片都被找到,则将BiDirPredFlag设置为等于1。否则,将BiDirPredFlag设置为等于0。
其次,在CU级别,如果CU的预测方向是双向预测并且BiDirPredFlag等于1,则显式地信令通知指示是否使用对称模式的对称模式标志。
当标志为真时,只有mvp_l0_flag、mvp_l1_flag和MVD0被显式地信令通知。对于列表0和列表1,参考索引被分别设置为等于RefIdxSymL0、RefIdxSymL1。MVD1刚刚被设置为等于–MVD0。最终的运动矢量如下公式所示。
图27示出了对称模式的示例。
表3示出了对相关标准的编解码单元语法的修改,用粗体、斜体和下划线字体表示。
表3:编解码单元语法中的修改
/>
2.11仿射双向预测编解码的对称MVD
可以实施仿射模式的SMVD。
3.上下文自适应二进制算术编解码(Context-adaptive Binary Arithmetic Coding,CABAC)
3.1 HEVC中的CABAC设计
3.1.1 HEVC中的上下文表示和初始化过程
在HEVC中,对于每个上下文变量,都初始化两个变量pStateIdx和valMps。
两个4比特变量slopeIdx和offsetIdx从8比特表条目initValue推导如下:
slopeIdx=initValue>>4
offsetIdx=initValue&15 (34)
在上下文变量的初始化中使用的变量m和n从slopeIdx和offsetIdx推导如下:
m=slopeIdx*5–45
n=(offsetIdx<<3)–16 (35)
为初始化而分配给pStateIdx和valMps的两个值是从条带的亮度量化参数(由SliceQpY表示)推导的。给定变量m和n,初始化指定如下:
3.1.2 HEVC中的状态转变过程
该过程的输入是与ctxTable和ctxIdx相关联的上下文变量的当前的pStateIdx、解码值binVal和valMps值。
该过程的输出是与ctxIdx相关联的上下文变量的更新的pStateIdx和valMps。
取决于解码值binVal,与ctxIdx相关联的两个变量pStateIdx和valMps的更新在(37)中推导如下:
3.2 VVC中的CABAC设计
VVC中的上下文自适应二进制算术编码器(Binary Arithmetic Coder,BAC)在VVC中已经改变,其在上下文更新过程和算术编码器方面与HEVC中不同。
这里是最近采用的提议的总结(JVET-M0473,CE测试5.1.13)。
表4:VVC中的CABAC修改总结
3.2.1 VVC中的上下文初始化过程
在VVC中,为初始化而分配给pStateIdx0和pStateIdx1的两个值是从SliceQpY推导的。给定变量m和n,初始化指定如下:
preCtxState=Clip3(0,127,((m*Clip3(0,51,SliceQpY))>>4)+n)
pStateIdx0=initStateIdxToState[preCtxState]>>4
pStateIdx1=initStateIdxToState[preCtxState] (38)
3.2.2 VVC中的状态转变过程
该过程的输入是当前的pStateIdx0和pStateIdx1,以及解码值binVal。
该过程的输出是与ctxIdx相关联的上下文变量的更新的pStateIdx0和pStateIdx1。
变量shift0(对应于VVC表4中CABAC修改总结中的变量a)和shift1(对应于VVC表4e中CABAC修改总结中的变量b)是从与ctxTable和ctxInc相关联的shiftIdx值推导的。
shift0=(shiftIdx>>2)+2
shift1=(shiftIdx&3)+3+shift0 (39)
取决于解码值binVal,与ctxIdx相关联的两个变量pStateIdx0和pStateIdx1的更新推导如下:
pStateIdx0=pStateIdx0-(pStateIdx0>>shift0)+(1023*binVal>>shift0)
pStateIdx1=pStateIdx1-(pStateIdx1>>shift1)+(16383*binVal>>shift1) (40)
4.现有实施方式的缺点
在一些现有实施方式中,当可以从仿射编解码块的多个MV/MV差(MVD)精度的集合中选择MV/MVD时,仍然不确定如何可以获得更准确的运动矢量。
在其它现有实施方式中,MV/MVD精度信息在确定应用于仿射模式的AMVR的整体编解码增益中也起着重要作用,但是实现该目标仍然是不确定的。
5.具有AMVR的仿射模式的MV预测值的示例方法
当前所公开的技术的实施例克服了现有实施方式的缺点,从而提供具有更高编解码效率的视频编解码。基于所公开的技术,具有自适应运动矢量分辨率(AMVR)的仿射模式的运动矢量预测值的推导和信令通知可以增强现有和未来的视频编解码标准,在针对各种实施方式所描述的以下示例中进行阐述。下面提供的所公开的技术的示例解释了一般构思,并且不意味着被解释为限制。在示例中,除非明确地相反指示,否则在这些示例中描述的各种特征可以进行组合。
在一些实施例中,当应用AMVR时,以下示例可以被应用于仿射模式或正常模式。这些示例假设精度Prec(即,MV具有1/(2^Prec)精度)用于在AF_INTER模式下编码MVD或者在正常帧间模式下编码MVD。运动矢量预测值(例如,从邻近块MV继承的)及其精度分别由MVPred(MVPredX,MVPredY)和PredPrec表示。
在以下讨论中,SatShift(x,n)被定义为
Shift(x,n)被定义为Shift(x,n)=(x+offset0)>>n。在一个示例中,offset0和/或offset1被设置为(1<<n)>>1或(1<<(n-1))。在另一个示例中,offset0和/或offset1被设置为0。在另一个示例中,offset0=offset1=((1<<n)>>1)-1或((1<<(n-1)))-1。
在以下讨论中,两个运动矢量之间的操作意味着该操作将被应用于运动矢量的两个分量两者。例如,MV3=MV1+MV2等同于MV3x=MV1x+MV2x以及MV3y=MV1y+MV2y。可替代地,该操作可以仅被应用于两个运动矢量的水平或垂直分量。
支持具有AMVR的仿射模式的改进
1.允许的MVD精度的集合可以在图片之间、条带之间或块之间不同。
a.在一个示例中,允许的MVD精度的集合可以取决于编解码信息,诸如块尺寸、块形状等。
b.可以预先定义允许的MV精度的集合,诸如{1/16,1/4,1}。
c.允许的MV精度的指示可以在SPS/PPS/VPS/序列头/图片头/条带头/CTU的组等中被信令通知。
d.来自允许的MV精度的集合的所选择的MV精度的信令通知还取决于块的允许的MV精度的数量。
2.向解码器信令通知语法元素以指示仿射帧间模式下的所使用的MVD精度。
a.在一个示例中,仅一个单个语法元素用于指示应用于仿射模式和
AMVR模式的MVD精度。
i.在一个示例中,使用相同的语义,也就是说,对于AMVR和仿射模式,相同的语法元素值被映射到相同的MVD精度。
ii.可替代地,单个语法元素的语义对于AMVR模式和仿射模式是不同的。也就是说,对于AMVR和仿射模式,相同的语法元素值可以被映射到不同的MVD精度。
b.在一个示例中,当仿射模式使用与AMVR相同的MVD精度的集合(例如,MVD精度集合为{1,1/4,4}像素)时,AMVR中的MVD精度语法元素在仿射模式下被重用,即,仅使用一个单个语法元素。
i.此外,可替代地,当在CABAC编码器/解码器中编码/解码该语法元素时,相同或不同的上下文模型可以用于AMVR和仿射模式。
ii.此外,可替代地,该语法元素在AMVR和仿射模式下可以具有不同的语义。例如,在AMVR中,等于0、1和2的语法元素分别指示1/4像素、1像素和4像素MV精度,而在仿射模式下,等于0、1和2的语法元素分别指示1/4像素、1/16像素和1像素MV精度。
c.在一个示例中,当仿射模式使用与AMVR相同数量的MVD精度,但使用不同的MVD精度集合(例如,AMVR的MVD精度集合为{1,1/4,4}像素,而对于仿射,其为{1/16,1/4,1}像素)时,AMVR中的MVD精度语法元素在仿射模式下被重用,即,仅使用一个单个语法元素。
i.此外,可替代地,当在CABAC编码器/解码器中编码/解码该语法元素时,相同或不同的上下文模型可以用于AMVR和仿射模式。
ii.此外,可替代地,该语法元素在AMVR和仿射模式下可以具有不同的语义。
d.在一个示例中,仿射模式使用比AMVR更少的MVD精度,AMVR中的MVD精度语法元素在仿射模式下被重用。然而,对于仿射模式,仅语法元素值的子集是有效的。
i.此外,可替代地,当在CABAC编码器/解码器中编码/解码该语法元素时,相同或不同的上下文模型可以用于AMVR和仿射模式。
ii.此外,可替代地,该语法元素在AMVR和仿射模式下可以具有不同的语义。
e.在一个示例中,仿射模式使用比AMVR更多的MVD精度,AMVR中的MVD精度语法元素在仿射模式下被重用。然而,在仿射模式下,这样的语法元素被扩展以允许更多值。
i.此外,可替代地,当在CABAC编码器/解码器中编码/解码该语法元素时,相同或不同的上下文模型可以用于AMVR和仿射模式。
ii.此外,可替代地,该语法元素在AMVR和仿射模式下可以具有不同的语义。
f.在一个示例中,新的语法元素用于编解码仿射模式的MVD精度,即,两个不同的语法元素用于编解码AMVR和仿射模式的MVD精度。
g.用于指示仿射模式的MVD精度的语法可以在以下条件之一或全部为真的情况下被信令通知:
i.所有控制点的MVD都为非零。
ii.至少一个控制点的MVD为非零。
iii.一个控制点(例如,第一CPMV)的MVD为非零在这种情况下,当以上条件之一或全部不成立时,不需要信令通知MVD精度。
h.用于指示仿射模式或AMVR模式的MVD精度的语法元素可以用上下文进行编解码,并且上下文取决于编解码信息。
i.在一个示例中,当仅存在一个单个语法元素时,上下文可以取决于当前块是否以仿射模式进行编解码。
i.在一个示例中,上下文可以取决于块尺寸/块形状/邻近块的MVD精度/时域层索引/预测方向等。
j.对仿射模式启用或禁用对多个MVD精度的使用可以在SPS/PPS/VPS/序列头/图片头/条带头/CTU的组等中被信令通知。
i.在一个示例中,是否信令通知对仿射模式启用或禁用对多个MVD精度的使用的信息可以取决于其它语法元素。例如,当仿射模式被启用时,对仿射模式启用或禁用对多个MV和/或MVP和/或MVD精度的使用的信息被信令通知;
并且当仿射模式被禁用时,该信息不被信令通知并且被推断为0。
k.可替代地,可以信令通知多个语法元素以指示仿射帧间模式下的所使用的MV和/或MVP和/或MVD精度(在以下讨论中,它们都被称为“MVD精度”)。
i.在一个示例中,用于指示仿射帧间模式和正常帧间模式下的所使用的MVD精度的语法元素可以不同。
1.用以指示仿射帧间模式和正常帧间模式下的所使用的MVD精度的语法元素的数量可以不同。
2.用以指示仿射帧间模式和正常帧间模式下的所使用的MVD精度的语法元素的语义可以不同。
3.算术编解码中用以编解码一个语法元素以指示仿射帧间模式和正常帧间模式下的所使用的MVD精度的上下文模型可以不同。
4.推导算术编解码中用以编解码一个语法元素以指示仿射帧间模式和正常帧间模式下的所使用的MVD精度的上下文模型的方法可以不同。
ii.在一个示例中,可以信令通知第一语法元素(例如,amvr_flag)以指示是否在仿射编解码块中应用AMVR。
1.第一语法元素被有条件地信令通知。
a.在一个示例中,当当前块用某种模式(例如,
CPR/IBC模式)进行编解码时,跳过第一语法元素
(amvr_flag)的信令通知。
b.在一个示例中,当所有CPMV的MVD(包括水平和垂直分量两者)都为零时,跳过第一语法元素
(amvr_flag)的信令通知。
c.在一个示例中,当一个所选择的CPMV的MVD(包括水平和垂直分量两者)都为零时,跳过第一语法元素(amvr_flag)的信令通知。
i.在一个示例中,所选择的CPMV的MVD是要被编解码/解码的第一CPMV的MVD。
d.在一个示例中,当启用仿射编解码块的多个MVD精度的使用为假时,跳过第一语法元素(amvr_flag)的信令通知。
e.在一个示例中,第一语法元素可以在以下条件下被信令通知:
i.启用仿射编解码块的多个MVD精度的使用为真,并且当前块以仿射模式进行编解码;
ii.可替代地,启用仿射编解码块的多个MVD精度的使用为真,当前块以仿射模式进行编解码,并且CPMV的MVD的至少一个分量不等于0。
iii.可替代地,启用仿射编解码块的多个MVD精度的使用为真,当前块以仿射模式进行编解码,并且所选择的CPMV的MVD的至少一个分量不等于0。
1.在一个示例中,所选择的CPMV的MVD是要被编解码/解码的第一CPMV的MVD。
2.当AMVR不被应用于仿射编解码块或者第一语法元素不存在时,利用默认的MV和/或MVD精度。
a.在一个示例中,默认精度为1/4像素。
b.可替代地,默认精度被设置为在仿射编解码块的运动补偿中使用的精度。
3.例如,如果amvr_flag等于0,则仿射模式的MVD精度为1/4像素;否则,仿射模式的MVD精度可以是其它值。
a.此外,可替代地,可以经由第二语法元素进一步信令通知附加的MVD精度。
iii.在一个示例中,可以信令通知第二语法元素(诸如amvr_coarse_precision_flag)以指示仿射模式的MVD精度。
1.在一个示例中,第二语法元素是否被信令通知可以取决于第一语法元素。例如,仅在第一语法元素为1时才信令通知第二语法元素。
2.在一个示例中,如果第二语法元素为0,则仿射模式的MVD精度为1像素;否则,仿射模式的MVD精度为1/16像素。
3.在一个示例中,如果第二语法元素为0,则仿射模式的MVD精度为1/16像素;否则,仿射模式的MVD精度为全像素。
iv.在一个示例中,用于指示仿射帧间模式下的所使用的MVD精度的语法元素与具有相同名称但用于指示正常帧间模式下的所使用的MVD精度的语法元素共享相同的上下文模型。
1.可替代地,用于指示仿射帧间模式下的所使用的MVD精度的语法元素与具有相同名称但用于指示正常帧间模式下的所使用的MVD精度的语法元素使用不同的上下文模型。
3.是否在仿射编解码块上应用或如何在仿射编解码块上应用AMVR可以取决于当前块的参考图片。
a.在一个示例中,如果参考图片是当前图片,则不应用AMVR,即,在当前块中应用帧内块复制。
用于编码器的仿射模式下的AVMR的快速算法
对于IMV=i,将仿射模式和AMVP模式的RD代价(实际RD代价、或SATD/SSE/SAD代价加粗糙比特代价(rough bits cost))表示为affineCosti和amvpCosti,其中i=0、1或2。这里,IMV=0意味着1/4像素MV,并且IMV=1对于AMVP模式意味着整数MV并且对于仿射模式意味着1/16像素MV,并且IMV=2对于AMVP模式意味着4像素MV并且对于仿射模式意味着整数MV。将Merge模式的RD代价表示为mergeCost。
4.提出如果当前CU的父CU的最佳模式不是AF_INTER模式或AF_MERGE模式,则对当前CU的仿射模式禁用AMVR。
a.可替代地,如果当前CU的父CU的最佳模式不是AF_INTER模式,则对当前CU的仿射模式禁用AMVR
5.提出如果affineCost0>th1*amvpCost0,则对仿射模式禁用AMVR,其中th1是正阈值。
a.此外,可替代地,如果min(affineCost0,amvpCost0)>th2*
mergeCost,则对仿射模式禁用AMVR,其中th2是正阈值。
b.此外,可替代地,如果affineCost0>th3*affineCost1,则对仿射模式禁用整数MV,其中th3是正阈值。
6.提出如果amvpCost0>th4*affineCost0,则对AMVP模式禁用AMVR,其中th4是正阈值。
a.可替代地,如果min(affineCost0,amvpCost0)>th5*mergeCost,则对AMVP模式禁用AMVR,其中th5是正阈值。
7.提出在一个MV精度下获得的4/6参数仿射模型可以用作其它MV精度的候选起始搜索点。
a.在一个示例中,在1/16MV下获得的4/6参数仿射模型可以用作其它MV精度的候选起始搜索点。
b.在一个示例中,在1/4MV下获得的4/6参数仿射模型可以用作其它MV精度的候选起始搜索点。
8.如果当前块的父块没有选择仿射模式,则对于当前块,不在编码器处检查仿射模式的AMVR。
9.先前编解码的帧/条带/片/CTU行中的仿射编解码块的不同MV精度的使用的统计可以用于提前终止当前条带/片/CTU行中的仿射编解码块的MV精度的率失真计算。
a.在一个示例中,具有某个MV精度的仿射编解码块的百分比被记录。如果百分比太低,则跳过对对应的MV精度的检查。
b.在一个示例中,具有相同时域层的先前编解码的帧用于决定是否跳过某个MV精度。
用于编解码仿射AMVR的上下文
10.对于用于编解码仿射AMVR码的每个上下文,提出设置变量(由shiftIdx表示)以控制与该上下文相关联的两个概率更新速度。
a.在一个示例中,更快的更新速度由(shiftIdx>>2)+2定义。
b.在一个示例中,更慢的更新速度由(shiftIdx&3)+3+shift0定义
c.在一个示例中,一致性比特流应当遵循这样的规则,即推导的更快的更新速度应当在[2,5]内,包括2和5。
d.在一个示例中,一致性比特流应当遵循这样的规则,即推导的更快的更新速度应当在[3,6]内,包括3和6。
11.提出当编解码一个块的AMVR模式时,邻近块的仿射AMVR模式信息不被允许用于上下文建模。
a.在一个示例中,可以利用邻近块的AMVR模式索引,并且排除邻近块的仿射AMVR模式信息。在表5(包括表5-1和表5-2)中示出了示例,其中(xNbL,yNbL)和(xNbA,yNbA)表示左侧和上方邻近块。在一个示例中,上下文索引偏移ctxInc=(condL&&availableL)+(condA&&availableA)+ctxSetIdx*3。
表5-1–使用左侧和上方语法元素的ctxInc的规范
表5-2–使用左侧和上方语法元素的ctxInc的规范
b.可替代地,可以进一步利用邻近块的仿射AMVR模式信息,但是是利用函数而不是直接使用。在一个示例中,当仿射编解码的邻近块的amvr_mode[xNbL][yNbL]指示某个MV精度(诸如1/4像素MV精度)时,如表6-1中所描述的函数func可以返回真。在一个示例中,当仿射编解码的邻近块的amvr_flag[xNbL][yNbL]指示某个MV精度(诸如1/4像素MV精度)时,如表6-2中所描述的函数func可以返回真。
表6-1–使用左侧和上方语法元素的ctxInc的规范
表6-2–使用左侧和上方语法元素的ctxInc的规范
c.可替代地,邻近块的仿射AMVR模式信息可以进一步用于编解码(被应用于正常帧间模式的)AMVR模式的第一语法元素(例如,amvr_flag)。表6-3和表6-4给出了一些示例。
表6-3–使用左侧和上方语法元素的ctxInc的规范
表6-4–使用左侧和上方语法元素的ctxInc的规范
d.当AMVR模式信息由多个语法元素(例如,第一和第二语法元素,由amvr_flag、amvr_coarse_precision_flag表示)表示时,以上语法amvr_mode可以被多个语法元素中的任何一个替换,并且以上方法仍然可以被应用。
12.提出当编解码仿射AMVR模式时,邻近块的AMVR模式信息可以用于上下文编解码。
a.在一个示例中,直接使用邻近块的AMVR模式信息。在表7中示出了示例。此外,可替代地,上下文索引偏移ctxInc=(condL&&availableL)+(condA&&availableA)+ctxSetIdx*3。
表7–使用左侧和上方语法元素的ctxInc的规范
b.可替代地,邻近块的AMVR模式信息不被允许用于上下文建模。
在表8中示出了示例。
表8–使用左侧和上方语法元素的ctxInc的规范
c.可替代地,可以进一步利用邻近块的AMVR模式信息,但是是利用函数而不是直接使用。在一个示例中,当非仿射编解码的邻近块的amvr_mode[xNbL][yNbL]指示某个MV精度(诸如1/4像素MV精度)时,如表9中所描述的函数func可以返回真。
表9–使用左侧和上方语法元素的ctxInc的规范
d.当仿射AMVR模式信息由多个语法元素(例如,第一和第二语法元素,由amvr_flag、amvr_coarse_precision_flag表示)表示时,以上语法amvr_mode可以被多个语法元素中的任何一个替换,并且以上方法仍然可以被应用。
SMVD和仿射SMVD的快速算法当检查SMVD模式时,假设当前所选择的最佳模式为CurBestMode,并且AMVR中的AMVR MVD精度为MvdPrec,或者仿射AMVR的MVD精度为MvdPrecAff。
13.可以根据当前所选择的最佳模式(即,CurBestMode)、AMVR中的MVD精度来跳过SMVD模式。
a.在一个示例中,如果CurBestMode是Merge模式或/和UMVE模式,则可以不检查SMVD模式。
b.在一个示例中,如果CurBestMode没有以SMVD模式进行编解码,则可以不检查SMVD模式。
c.在一个示例中,如果CurBestMode是仿射模式,则可以不检查SMVD模式。
d.在一个示例中,如果CurBestMode是子块Merge模式,则可以不检查SMVD模式。
e.在一个示例中,如果CurBestMode是仿射SMVD模式,则可以不检查SMVD模式。
f.在一个示例中,如果CurBestMode是仿射Merge模式,则可以不检查SMVD模式。
g.在一个示例中,以上快速方法,即项目符号13.a~13.f,可以仅被应用于一些MVD精度。
i.在一个示例中,仅当MVD精度大于或等于一精度(例如,整数像素精度)时,才可以应用以上快速方法。
ii.在一个示例中,仅当MVD精度大于一精度(例如,整数像素精度)时,才可以应用以上快速方法。
iii.在一个示例中,仅当MVD精度小于或等于一精度(例如,整数像素精度)时,才可以应用以上快速方法。
iv.在一个示例中,仅当MVD精度小于一精度(例如,整数像素精度)时,才可以应用以上快速方法。
14.可以根据当前所选择的最佳模式(即,CurBestMode)、仿射AMVR中的MVD精度来跳过仿射SMVD模式。
a.在一个示例中,如果CurBestMode是Merge模式或/和UMVE模式,则可以不检查仿射SMVD模式。
b.在一个示例中,如果CurBestMode没有以仿射SMVD模式进行编解码,则可以不检查仿射SMVD模式。
c.在一个示例中,如果CurBestMode是子块Merge模式,则可以不检查仿射SMVD模式。
d.在一个示例中,如果CurBestMode是SMVD模式,则可以不检查仿射SMVD模式。
e.在一个示例中,如果CurBestMode是仿射Merge模式,则可以不检查仿射SMVD模式。
f.在一个示例中,以上快速方法,即项目符号14.a~14.e,可以仅被应用于一些MVD精度。
i.在一个示例中,仅当仿射MVD精度大于或等于一精度(例如,整数像素精度)时,才可以应用以上快速方法。
ii.在一个示例中,仅当仿射MVD精度大于一精度(例如,整数像素精度)时,才可以应用以上快速方法。
iii.在一个示例中,仅当仿射MVD精度小于或等于一精度(例如,整数像素精度)时,才可以应用以上快速方法。
iv.在一个示例中,仅当仿射MVD精度小于一精度(例如,整数像素精度)时,才可以应用以上快速方法。
15.以上提出的方法可以在某些条件(诸如块尺寸、条带/图片/片类型、或运动信息)下被应用。
a.在一个示例中,当块尺寸包含小于M*H个样点(例如,16或32或64个亮度样点)时,不允许提出的方法。
b.可替代地,当块的宽度或/和高度中的最小尺寸小于或不大于X时,不允许提出的方法。在一个示例中,X被设置为8。
c.可替代地,当块的宽度或/和高度中的最小尺寸不小于X时,不允许提出的方法。在一个示例中,X被设置为8。
d.可替代地,当块的宽度>th1或>=th1和/或块的高度>th2或>=th2时,不允许提出的方法。在一个示例中,th1和/或th2被设置为8。
e.可替代地,当块的宽度<th1或<=th1和/或块的高度<th2或<a=th2时,不允许提出的方法。在一个示例中,th1和/或th2被设置为8。
f.可替代地,启用或禁用以上方法和/或要应用哪种方法可以取决于块大小、视频处理数据单元(Video Processing Data Unit,VPDU)、图片类型、低延迟检查标志、当前块的编解码信息(诸如参考图片、单向或双向预测)或先前编解码的块。
16.当应用或不应用帧内块复制(Intra Block Copy,IBC,又称为当前图片参考(Current Picture Reference,CPR))时,用于仿射模式的AMVR方法可以以不同的方式被执行。
a.在一个示例中,如果块通过IBC进行编解码,则不能使用仿射模式的AMVR。
b.在一个示例中,如果块通过IBC进行编解码,则可以使用仿射模式的AMVR,但是候选MV/MVD/MVP精度可以不同于用于非IBC编解码的仿射编解码块的精度。
17.文档中的所有术语“条带”都可以被“片组”或“片”替换。
18.在VPS/SPS/PPS/条带头/片组头中,等于1的语法元素(例如,no_amvr_constraint_flag)指定用以指示AMVR是否被启用的语法元素(例如,sps_amvr_enabled_flag)和用以指示仿射AMVR是否被启用的语法元素(例如,sps_affine_avmr_enabled_flag)都应当等于0是比特流一致性的要求。等于0的语法元素(例如,
no_amvr_constraint_flag)不强加约束。
19.在VPS/SPS/PPS/条带头/片组头或其它视频数据单元中,可以信令通知语法元素(例如,no_affine_amvr_constraint_flag)。
a.在一个示例中,等于1的no_affine_amvr_constraint_flag指定用以指示仿射AMVR是否被启用的语法元素(例如,sps_affine_avmr_enabled_flag)应当等于0是比特流一致性的要求。等于0的语法元素(例如,no_affine_amvr_constraint_flag)不强加约束
20.多个上下文可以用于编解码指示粗略运动精度的第二语法元素(诸如amvr_coarse_precision_flag)。
a.在一个示例中,可以利用两个上下文。
b.在一个示例中,上下文的选择可以取决于当前块是否是仿射编解码的。
c.在一个示例中,对于第一语法,它可以仅用一个上下文进行编解码,并且同样对于第二语法,它可以仅用一个上下文进行编解码。
d.在一个示例中,对于第一语法,它可以仅用一个上下文进行编解码,并且同样对于第二语法,它可以被旁路编解码。
e.在一个示例中,对于第一语法,它可以被旁路编解码,并且同样对于第二语法,它可以被旁路编解码。
f.在一个示例中,对于与运动矢量精度相关的所有语法元素,它们可以被旁路编解码。
21.例如,仅语法元素amvr_mode的第一二进制位使用(多个)算术编解码上下文进行编解码。amvr_mode的所有随后的二进制位都被编解码为旁路编解码。
a.以上公开的方法也可以被应用于其它语法元素。
b.例如,仅语法元素SE的第一二进制位使用(多个)算术编解码上下文进行编解码。SE的所有随后的二进制位都被编解码为旁路编解码。SE可以是
1)alf_ctb_flag
2)sao_merge_left_flag
3)sao_merge_up_flag
4)sao_type_idx_luma
5)sao_type_idx_chroma
6)split_cu_flag
7)split_qt_flag
8)mtt_split_cu_vertical_flag
9)mtt_split_cu_binary_flag
10)cu_skip_flag
11)pred_mode_ibc_flag
12)pred_mode_flag
13)intra_luma_ref_idx
14)intra_subpartitions_mode_flag
15)intra_subpartition_split_flag
16)intra_luma_mpm_flag
17)intra_chroma_pred_mode
18)merge_flag
19)inter_pred_idc
20)inter_affine_flag
21)cu_affine_type_flag
22)ref_idx_l0
23)mvp_l0_flag
24)ref_idx_l1
25)mvp_l1_flag
26)avmr_flag
27)amvr_precision_flag
28)gbi_idx
29)cu_cbf
30)cu_sbt_flag
31)cu_sbt_quad_flag
32)cu_sbt_horizontal_flag
33)cu_sbt_pos_flag
34)mmvd_flag
35)mmvd_merge_flag
36)mmvd_distance_idx
37)ciip_flag
38)ciip_luma_mpm_flag
39)merge_subblock_flag
40)merge_subblock_idx
41)merge_triangle_flag
42)merge_triangle_idx0
43)merge_triangle_idx1
44)merge_idx
45)abs_mvd_greater0_flag
46)abs_mvd_greater1_flag
47)tu_cbf_luma
48)tu_cbf_cb
49)tu_cbf_cr
50)cu_qp_delta_abs
51)transform_skip_flag
52)tu_mts_idx
53)last_sig_coeff_x_prefix
54)last_sig_coeff_y_prefix
55)coded_sub_block_flag
56)sig_coeff_flag
57)par_level_flag
58)abs_level_gt1_flag
59)abs_level_gt3_flag
c.此外,可替代地,如果语法元素SE是二进制值(即,它可以仅等于0或1),则它可以被上下文编解码。
i.此外,可替代地,如果语法元素SE是二进制值(即,它可以仅等于0或1),则它可以被旁路编解码。
d.此外,可替代地,仅1个上下文可以用于编解码第一二进制位。22.运动矢量预测(MVP)或运动矢量差(MVD)或重构的运动矢量(MV)的精度可以根据可以被信令通知的运动精度而改变。
a.在一个示例中,如果MVP的原始预测低于(或不高于)目标精度,则MVP=MVP<<s。s是整数,其可以取决于原始精度和目标精度之间的差。
i.可替代地,如果MVD的原始精度低于(或不高于)目标精度,则MVD=MVD<<s。s是整数,其可以取决于原始精度和目标精度之间的差。
ii.可替代地,如果MV的原始精度低于(或不高于)目标精度,则MV=MV<<s。s是整数,其可以取决于原始精度和目标精度之间的差。
b.在一个示例中,如果MVP的原始预测高于(或不低于)目标精度,则MVP=Shift(MVP,s)。s是整数,其可以取决于原始精度和目标精度之间的差。
i.可替代地,如果MVD的原始精度高于(或不低于)目标精度,则MVD=Shift(MVD,s)。s是整数,其可以取决于原始精度和目标精度之间的差。
ii.可替代地,如果MV的原始精度高于(或不低于)目标精度,则MV=Shift(MV,s)。s是整数,其可以取决于原始精度和目标精度之间的差。
c.在一个示例中,如果MVP的原始预测高于(或不低于)目标精度,则MVP=SatShift(MVP,s)。s是整数,其可以取决于原始精度和目标精度之间的差。
i.可替代地,如果MVD的原始精度高于(或不低于)目标精度,则MVD=SatShift(MVD,s)。s是整数,其可以取决于原始精度和目标精度之间的差。
ii.可替代地,如果MV的原始精度高于(或不低于)目标精度,则MV=SatShift(MV,s)。s是整数,其可以取决于原始精度和目标精度之间的差。
d.当当前块没有以仿射模式进行编解码时,可以应用所公开的以上方法。
e.当当前块以仿射模式进行编解码时,可以应用所公开的以上方法。
6.实施例
用粗体、斜体和下划线字体指示的部分示出了修改的规范。
6.1实施例1:仿射AMVR模式的使用的指示
它可以在SPS/PPS/VPS/APS/序列头/图片头/片组头等中被信令通知。本章节呈现SPS中的信令。
6.1.1 SPS语法表
替代的SPS语法表给出如下:
语义:
等于1的sps_affine_amvr_enabled_flag指定在仿射帧间模式的运动矢量编解码中使用自适应运动矢量差分辨率。等于0的amvr_enabled_flag指定不在仿射帧间模式的运动矢量编解码中使用自适应运动矢量差分辨率。
6.2仿射AMVR模式信息的解析过程
仿射AMVR模式信息的语法可以重用AMVR模式信息(应用于正常帧间模式)的语法。可替代地,可以利用不同的语法元素。
仿射AMVR模式信息可以被有条件地信令通知。下面不同的实施例示出了条件的一些示例。
6.2.1实施例#1:CU语法表
/>
/>
6.2.2实施例2:替代的CU语法表设计
/>
/>
6.2.3实施例3:第三CU语法表设计
/>
/>
6.2.4实施例4:针对AMVR和仿射AMVR模式具有不同语法的语法表设计
/>
/>
·conditionsA在一个示例中被定义如下:
(sps_affine_amvr_enabled_flag&&inter_affine_flag==1&&(MvdCpL0[x0][y0][0][0]!=0||MvdCpL0[x0][y0][0][1]!=0||MvdCpL1[x0][y0][0][0]!=0||MvdCpL1[x0][y0][0][1]!=0||MvdCpL0[x0][y0][1][0]!=0||MvdCpL0[x0][y0][1][1]!=0||MvdCpL1[x0][y0][1][0]!=0||MvdCpL1[x0][y0][1][1]!=0||MvdCpL0[x0][y0][2][0]!=0||MvdCpL0[x0][y0][2][1]!=0||MvdCpL1[x0][y0][2][0]!=0||MvdCpL1[x0][y0][2][1]!=0))
可替代地,conditionsA被定义如下:
(sps_affine_amvr_enabled_flag&&inter_affine_flag==1&&(MvdCpL0[x0][y0][0][0]!=0||MvdCpL0[x0][y0][0][1]!=0||MvdCpL1[x0][y0][0][0]!=0||MvdCpL1[x0][y0][0][1]!=0||)
可替代地,conditionsA被定义如下:
(sps_affine_amvr_enabled_flag&&inter_affine_flag==1&&(MvdCpLX[x0][y0][0][0]!=0||MvdCpLX[x0][y0][0][1]!=0)
其中,X为0或1。
可替代地,conditionsA被定义如下:
(sps_affine_amvr_enabled_flag&&inter_affine_flag==1)
·在一个示例中,conditionsB被定义如下:
!sps_cpr_enabled_flag||!(inter_pred_idc[x0][y0]==PRED_L0&&ref_idx_l0[x0][y0]==num_ref_idx_l0_active_minus1)
可替代地,conditionsB被定义如下:
!sps_cpr_enabled_flag||!(pred_mode[x0][y0]==CPR)。
可替代地,conditionsB被定义如下:
!sps_ibc_enabled_flag||!(pred_mode[x0][y0]==IBC)。
当不同的语法元素用于编解码AMVR或仿射AMVR时,可以相应地应用用于6.5中的实施例的被应用于仿射AMVR的上下文建模和/或上下文。
6.2.5语义
amvr_flag[x0][y0]指定运动矢量差的分辨率。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。等于0的amvr_flag[x0][y0]指定运动矢量差的分辨率为亮度样点的1/4。等于1的amvr_flag[x0][y0]指定运动矢量差的分辨率进一步由amvr_coarse_precisoin_flag[x0][y0]指定。
当amvr_flag[x0][y0]不存在时,它被推断如下:
-如果sps_cpr_enabled_flag等于1,则amvr_flag[x0][y0]被推断为等于1。
-否则(sps_cpr_enabled_flag等于0),mvr_flag[x0][y0]被推断为等于0。
当amvr_coarse_precisoin_flag[x0][y0]不存在时,它被推断为等于0。
则变量MvShift被设置为等于(amvr_flag[x0][y0]+amvr_coarse_precisoin_flag[x0][y0])<<1,并且变量MvdL0[x0][y0][0]、MvdL0[x0][y0][1]、MvdL1[x0][y0][0]、MvdL1[x0][y0][1]被修改如下:
MvdL0[x0][y0][0]=MvdL0[x0][y0][0]<<(MvShift+2) (7-70)
MvdL0[x0][y0][1]=MvdL0[x0][y0][1]<<(MvShift+2) (7-71)
MvdL1[x0][y0][0]=MvdL1[x0][y0][0]<<(MvShift+2) (7-72)
MvdL1[x0][y0][1]=MvdL1[x0][y0][1]<<(MvShift+2) (7-73)
/>
可替代地,如果inter_affine_flag[x0][y0]等于1,则变量MvShift被设置为等于(affine_amvr_coarse_precisoin_flag?(affine_amvr_coarse_precisoin_flag<<1):(-(affine_amvr_flag<<1)))。
6.3运动矢量的取整过程
取整过程被修改为,当给定的rightShift值等于0时(这发生在1/16像素精度),取整偏移被设置为0,而不是(1<<(rightShift-1))。
例如,MV的取整过程的子条款被修改如下:
该过程的输入是:
-运动矢量mvX,
-右移位参数rightShift,用于取整,
-左移位参数leftShift,用于分辨率增加。
该过程的输出是取整后的运动矢量mvX。
对于mvX的取整,以下适用:
mvX[0]=(mvX[0]>=0?(mvX[0]+offset)>>rightShift:
-((-mvX[0]+offset)>>rightShift))<<leftShift (8-372)
mvX[1]=(mvX[1]>=0?(mvX[1]+offset)>>rightShift:-((-mvX[1]+offset)>>rightShift))<<leftShift (8-373)
6.4解码过程
仿射运动矢量推导过程中调用的取整过程是用(MvShift+2)而不是固定为2的输入来执行的。
亮度仿射控制点运动矢量预测值的推导过程
该过程的输入是:
-当前亮度编解码块的左上方样点相对于当前图片的左上方亮度样点的亮度位置(xCb,yCb),
-两个变量cbWidth和cbHeight,指定当前亮度编解码块的宽度和高度,
-当前编解码单元的参考索引refIdxLX,其中X为0或1,
-控制点运动矢量的数量numCpMv。
该过程的输出是亮度仿射控制点运动矢量预测值mvpCpLX[cpIdx],其中X为0或1,并且cpIdx=0..numCpMv-1。
对于控制点运动矢量预测值候选列表cpMvpListLX(其中X为0或1)的推导,以下有序步骤适用:
列表中的控制点运动矢量预测值候选的数量numCpMvpCandLX被设置为等于0。
变量availableFlagA和availableFlagB都被设置为等于FALSE(假)。
……
调用如在条款8.4.2.14中指定的运动矢量的取整过程,其中,以设置为等于cpMvpLX[cpIdx]的mvX、设置为等于的rightShift、以及设置为等于的leftShift作为输入,并且以取整后的cpMvpLX[cpIdx](其中cpIdx=0..numCpMv-1)作为输出。
……
变量availableFlagA被设置为等于TRUE(真)
调用如在条款8.4.4.5中指定的根据邻近块的亮度仿射控制点运动矢量的推导过程,其中,以亮度编解码块位置(xCb,yCb)、亮度编解码块宽度和高度(cbWidth,cbHeight)、邻近亮度编解码块位置(xNb,yNb)、邻近亮度编解码块宽度和高度(nbW,nbH)以及控制点运动矢量的数量numCpMv作为输入,以控制点运动矢量预测值候选cpMvpLY[cpIdx](其中cpIdx=0..numCpMv-1)作为输出。
调用如在条款8.4.2.14中指定的运动矢量的取整过程,其中,以设置为等于cpMvpLY[cpIdx]的mvX、设置为等于的rightShift、以及设置为等于的leftShift作为输入,并且以取整后的cpMvpLY[cpIdx](其中cpIdx=0..numCpMv-1)作为输出。
……
调用如在条款8.4.4.5中指定的根据邻近块的亮度仿射控制点运动矢量的推导过程,其中,以亮度编解码块位置(xCb,yCb)、亮度编解码块宽度和高度(cbWidth,cbHeight)、邻近亮度编解码块位置(xNb,yNb)、邻近亮度编解码块宽度和高度(nbW,nbH)以及控制点运动矢量的数量numCpMv作为输入,以控制点运动矢量预测值候选cpMvpLX[cpIdx](其中cpIdx=0..numCpMv-1)作为输出。
调用如在条款8.4.2.14中指定的运动矢量的取整过程,其中,以设置为等于cpMvpLX[cpIdx]的mvX、设置为等于的rightShift、以及设置为等于的leftShift作为输入,并且以取整后的cpMvpLX[cpIdx](其中cpIdx=0..numCpMv-1)作为输出。
进行以下分配:
cpMvpListLX[numCpMvpCandLX][0]=cpMvpLX[0] (8-618)
cpMvpListLX[numCpMvpCandLX][1]=cpMvpLX[1] (8-619)
cpMvpListLX[numCpMvpCandLX][2]=cpMvpLX[2] (8-620)
numCpMvpCandLX=numCpMvpCandLX+1 (8-621)
否则如果PredFlagLY[xNbBk][yNbBk](其中Y=!X)等于1并且DiffPicOrderCnt(RefPicListY[RefIdxLY[xNbBk][yNbBk]],RefPicListX[refIdxLX])等于0,则以下适用:
变量availableFlagB被设置为等于TRUE
调用如在条款8.4.4.5中指定的根据邻近块的亮度仿射控制点运动矢量的推导过程,其中,以亮度编解码块位置(xCb,yCb)、亮度编解码块宽度和高度(cbWidth,cbHeight)、邻近亮度编解码块位置(xNb,yNb)、邻近亮度编解码块宽度和高度(nbW,nbH)以及控制点运动矢量的数量numCpMv作为输入,以控制点运动矢量预测值候选cpMvpLY[cpIdx](其中cpIdx=0..numCpMv-1)作为输出。
调用如在条款8.4.2.14中指定的运动矢量的取整过程,其中,以设置为等于cpMvpLY[cpIdx]的mvX、设置为等于的rightShift、以及设置为等于/>的leftShift作为输入,并且以取整后的cpMvpLY[cpIdx](其中cpIdx=0..numCpMv-1)作为输出。
进行以下分配:
cpMvpListLX[numCpMvpCandLX][0]=cpMvpLY[0] (8-622)
cpMvpListLX[numCpMvpCandLX][1]=cpMvpLY[1] (8-623)
cpMvpListLX[numCpMvpCandLX][2]=cpMvpLY[2] (8-624)
numCpMvpCandLX=numCpMvpCandLX+1 (8-625)
当numCpMvpCandLX小于2时,以下适用
调用如在条款8.4.4.8中指定的构建的仿射控制点运动矢量预测候选的推导过程,其中,以亮度编解码块位置(xCb,yCb)、亮度编解码块宽度cbWidth、亮度编解码块高度cbHeight和当前编解码单元的参考索引refIdxLX作为输入,并且以可用性标志availableConsFlagLX、可用性标志availableFlagLX[cpIdx]和cpMvpLX[cpIdx](其中cpIdx=0..numCpMv-1)作为输出。
当availableConsFlagLX等于1,并且numCpMvpCandLX等于0时,进行以下分配:
cpMvpListLX[numCpMvpCandLX][0]=cpMvpLX[0] (8-626)
cpMvpListLX[numCpMvpCandLX][1]=cpMvpLX[1] (8-627)
cpMvpListLX[numCpMvpCandLX][2]=cpMvpLX[2] (8-628)
numCpMvpCandLX=numCpMvpCandLX+1 (8-629)
对于cpIdx=0..numCpMv-1,以下适用:
当numCpMvpCandLX小于2并且availableFlagLX[cpIdx]等于1时,进行以下分配:
cpMvpListLX[numCpMvpCandLX][0]=cpMvpLX[cpIdx] (8-630)
cpMvpListLX[numCpMvpCandLX][1]=cpMvpLX[cpIdx] (8-631)
cpMvpListLX[numCpMvpCandLX][2]=cpMvpLX[cpIdx] (8-632)
numCpMvpCandLX=numCpMvpCandLX+1 (8-633)
当numCpMvpCandLX小于2时,以下适用:
如在条款8.4.2.11中指定的时域亮度运动矢量预测的推导过程,其中,以亮度编解码块位置(xCb,yCb)、亮度编解码块宽度cbWidth、亮度编解码块高度cbHeight和refIdxLX作为输入,并且输出为可用性标志availableFlagLXCol和时域运动矢量预测值mvLXCol。
当availableFlagLXCol等于1时,以下适用:
调用如在条款8.4.2.14中指定的运动矢量的取整过程,其中,以设置为等于mvLXCol的mvX、设置为等于的rightShift、以及设置为等于/>的leftShift作为输入,并且以取整后的mvLXCol作为输出。进行以下分配:
cpMvpListLX[numCpMvpCandLX][0]=mvLXCol (8-634)
cpMvpListLX[numCpMvpCandLX][1]=mvLXCol (8-635)
cpMvpListLX[numCpMvpCandLX][2]=mvLXCol (8-636)
numCpMvpCandLX=numCpMvpCandLX+1 (8-637)
当numCpMvpCandLX小于2时,重复以下,直到numCpMvpCandLX等于2,
其中mvZero[0]和mvZero[1]都等于0:
cpMvpListLX[numCpMvpCandLX][0]=mvZero (8-638)
cpMvpListLX[numCpMvpCandLX][1]=mvZero (8-639)
cpMvpListLX[numCpMvpCandLX][2]=mvZero (8-640)
numCpMvpCandLX=numCpMvpCandLX+1 (8-641)
仿射控制点运动矢量预测值cpMvpLX(其中X为0或1)被推导如下:
cpMvpLX=cpMvpListLX[mvp_lX_flag[xCb][yCb]] (8-642)
构建的仿射控制点运动矢量预测候选的推导过程
该过程的输入是:
-亮度位置(xCb,yCb),指定当前亮度编解码块相对于当前图片的左上方亮度样点的左上方样点,
-两个变量cbWidth和cbHeight,指定当前亮度编解码块的宽度和高度,
-当前预测单元分割的参考索引refIdxLX,其中X为0或1,该过程的输出是:
-构建的仿射控制点运动矢量预测候选的可用性标志availableConsFlagLX,其中X为0或1,
-可用性标志availableFlagLX[cpIdx],其中cpIdx=0..2并且X为0或1,
-构建的仿射控制点运动矢量预测候选cpMvLX[cpIdx],其中cpIdx=0..numCpMv-1并且X为0或1。
第一(左上方)控制点运动矢量cpMvLX[0]和可用性标志availableFlagLX[0]按以下有序步骤被推导:
样点位置(xNbB2,yNbB2)、(xNbB3,yNbB3)和(xNbA2,yNbA2)分别被设置为等于(xCb-1,yCb-1)、(xCb,yCb-1)和(xCb-1,yCb)。
可用性标志availableFlagLX[0]被设置为等于0,并且cpMvLX[0]的两个分量都被设置为等于0。
对于(xNbTL,yNbTL)(其中TL被B2、B3和A2替换),以下适用:
调用如在条款中指定的编解码块的可用性推导过程,其中,以亮度编解码块位置(xCb,yCb)、亮度编解码块宽度cbWidth、亮度编解码块高度cbHeight、亮度位置(xNbY,yNbY)设为等于(xNbTL,yNbTL)作为输入,并且将输出分配给编解码块可用性标志availableTL。
当availableTL等于TRUE并且availableFlagLX[0]等于0时,以下适用:如果PredFlagLX[xNbTL][yNbTL]等于1,并且DiffPicOrderCnt(RefPicListX[RefIdxLX[xNbTL][yNbTL]],RefPicListX[refIdxLX])等于0,并且对应于RefIdxLX[xNbTL][yNbTL]的参考图片不是当前图片,则availableFlagLX[0]被设置为等于1,并且进行以下分配:
cpMvLX[0]=MvLX[xNbTL][yNbTL] (8-643)
否则,当PredFlagLY[xNbTL][yNbTL](其中Y=!X)等于1,并且DiffPicOrderCnt(RefPicListY[RefIdxLY[xNbTL][yNbTL]],RefPicListX[refIdxLX])等于0,并且对应于RefIdxLY[xNbTL][yNbTL]的参考图片不是当前图片时,availableFlagLX[0]被设置为等于1,并且进行以下分配:
cpMvLX[0]=MvLY[xNbTL][yNbTL] (8-644)
当availableFlagLX[0]等于1时,调用如在条款8.4.2.14中指定的运动矢量的取整过程,其中,以mvX设置为等于cpMvLX[0]、设置为等于的rightShift、以及设置为等于/>的leftShift作为输入,并且取整后的cpMvLX[0]作为输出。
第二个(右上)控制点运动矢量cpMvLX[1]和可用性标志availableFlagLX[1]按以下有序步骤推导:
样点位置(xNbB1,yNbB1)和(xNbB0,yNbB0)分别被设置为等于(xCb+cbWidth-1,yCb-1)和(xCb+cbWidth,yCb-1)。
可用性标志availableFlagLX[1]被设置为等于0,并且cpMvLX[1]的两个分量都被设置为等于0。
对于(xNbTR,yNbTR),其中TR由B1和B0替换,以下适用:
调用如在条款6.4.X中指定的编解码块的可用性推导过程,其中,以亮度编解码块位置(xCb,yCb)、亮度编解码块宽度cbWidth、亮度编解码块高度cbHeight、亮度位置(xNbY,yNbY)设置为等于(xNbTR,yNbTR)作为输入,并且将输出分配给编解码块可用性标志availableTR。
当availableTR等于TRUE并且availableFlagLX[1]等于0时,以下适用:如果PredFlagLX[xNbTR][yNbTR]等于1,并且DiffPicOrderCnt(RefPicListX[RefIdxLX[xNbTR][yNbTR]],RefPicListX[refIdxLX])等于0,并且对应于RefIdxLX[xNbTR][yNbTR]的参考图片不是当前图片,则availableFlagLX[1]被设置为等于1,并且进行以下分配:
cpMvLX[1]=MvLX[xNbTR][yNbTR] (8-645)
否则,当PredFlagLY[xNbTR][yNbTR](其中Y=!X)等于1,并且DiffPicOrderCnt(RefPicListY[RefIdxLY[xNbTR][yNbTR]],RefPicListX[refIdxLX])等于0,并且对应于RefIdxLY[xNbTR][yNbTR]的参考图片不是当前图片时,availableFlagLX[1]被设置为等于1,并且进行以下分配:
cpMvLX[1]=MvLY[xNbTR][yNbTR] (8-646)
当availableFlagLX[1]等于1时,调用如在条款8.4.2.14中指定的运动矢量的取整过程,其中,以mvX设置为等于cpMvLX[1]、设置为等于的rightShift、以及设置为等于/>的leftShift作为输入,并且取整后的cpMvLX[1]作为输出。
第三个(左下)控制点运动矢量cpMvLX[2]和可用性标志availableFlagLX[2]按以下有序步骤推导:
样点位置(xNbA1,yNbA1)和(xNbA0,yNbA0)分别被设置为(xCb-1,yCb+cbHeight-1)和(xCb-1,yCb+cbHeight)。
可用性标志availableFlagLX[2]被设置为等于0,并且cpMvLX[2]的两个分量都被设置为等于0。
对于(xNbBL,yNbBL),其中BL由A1和A0替换,以下适用:
调用如在条款6.4.X中指定的编解码块的可用性推导过程,其中,以亮度编解码块位置(xCb,yCb)、亮度编解码块宽度cbWidth、亮度编解码块高度cbHeight、亮度位置(xNbY,yNbY)设置为等于(xNbBL,yNbBL)作为输入,并且将输出分配给编解码块可用性标志availableBL。
当availableBL等于TRUE并且availableFlagLX[2]等于0时,以下适用:如果PredFlagLX[xNbBL][yNbBL]等于1,并且DiffPicOrderCnt(RefPicListX[RefIdxLX[xNbBL][yNbBL]],RefPicListX[refIdxLX])等于0,并且对应于RefIdxLY[xNbBL][yNbBL]的参考图片不是当前图片,则availableFlagLX[2]被设置为等于1,并且进行以下分配:
cpMvLX[2]=MvLX[xNbBL][yNbBL] (8-647)
否则,当PredFlagLY[xNbBL][yNbBL](其中Y=!X)等于1,并且DiffPicOrderCnt(RefPicListY[RefIdxLY[xNbBL][yNbBL]],RefPicListX[refIdxLX])等于0,并且对应于RefIdxLY[xNbBL][yNbBL]的参考图片不是当前图片时,availableFlagLX[2]被设置为等于1,并且进行以下分配:
cpMvLX[2]=MvLY[xNbBL][yNbBL] (8-648)
当availableFlagLX[2]等于1时,调用如在条款8.4.2.14中指定的运动矢量的取整过程,其中,以mvX设置为等于cpMvLX[2]、设置为等于的rightShift、以及设置为等于/>的leftShift作为输入,并且取整后的cpMvLX[2]作为输出。
6.5上下文建模
ctxInc对具有上下文编解码的二进制位的语法元素的分配:
使用左侧和上方语法元素的ctxInc的规范:
在一个示例中,上下文增加偏移ctxInc=(condL&&availableL)+(condA&&availableA)+ctxSetIdx*3。
可替代地,ctxInc=((condL&&availableL)||(condA&&availableA))+ctxSetIdx*3。
ctxInc=(condL&&availableL)+M*(condA&&availableA)+ctxSetIdx*3。(例如,M=2)
ctxInc=M*(condL&&availableL)+(condA&&availableA)+ctxSetIdx*3。(例如,M=2)
amvr_flag的ctxIdx的initValue的值:
当当前块是仿射或非仿射时,使用不同的上下文。
可替代地,
可替代地,当当前块是仿射或非仿射时,可以使用相同的上下文。
可替代地,amvr_flag被旁路编解码。
amvr_coarse_precisoin_flag的ctxIdx的initValue的值:
当当前块是仿射或非仿射时,使用不同的上下文。
可替代地,
可替代地,当当前块是仿射或非仿射时,可以使用相同的上下文。
可替代地,amvr_coarse_precisoin_flag被旁路编解码。
上面描述的示例可以结合在下面描述的方法的上下文中,例如方法2500,其可以在视频解码器或视频编码器处实施。
图25示出了用于视频解码的示例性方法的流程图。方法2500包括,在步骤2510处,确定使用(a)多个运动矢量差(MVD)精度或(b)自适应运动矢量差分辨率(AMVR)对当前视频块进行仿射编解码,并且在步骤2520处,基于该确定,执行当前视频块和当前视频块的比特流表示之间的转换。
方法2500包括,在步骤2520处,基于最终运动矢量,执行比特流表示和当前块之间的转换,该当前块使用支持自适应运动矢量分辨率(AMVR)过程的仿射帧间模式或正常帧间模式进行编解码。在一些实施例中,该转换从比特流表示生成当前块(例如,可以在视频解码器中实施)。在其它实施例中,该转换从当前块生成比特流表示(例如,可以在视频编码器中实施)。
在一些实施例中,并且在示例1的上下文中,最终运动矢量的精度与当前块的存储的运动矢量的精度相同。在一个示例中,最终运动矢量的精度为1/16像素。在另一个示例中,最终运动矢量的精度为1/8像素。
在一些实施例中,并且在示例2的上下文中,方法2500还包括在确定MVD的精度是分数的(例如,大于1像素的精度)时旁路(bypassing)MVP的缩放操作的步骤。在其它实施例中,方法2500还包括在确定MVD的精度小于或等于1像素时缩放MVP的步骤。
在一些实施例中,并且在示例5的上下文中,当前块使用仿射帧间模式进行编解码,并且信令通知的语法元素指示运动矢量的精度或运动矢量差的精度。在一个示例中,信令通知的语法元素的值0、1或2分别对应于作为1/4像素、1/16像素和1像素的运动矢量的精度。在另一个示例中,信令通知的语法元素的值0、1或2分别对应于作为1/4像素、1像素和1/16像素的运动矢量的精度。在又一个示例中,信令通知的语法元素的值0、1或2分别对应于作为1/16像素、1/4像素和1像素的运动矢量的精度。
在一些实施例中,并且在示例6的上下文中,基于序列参数集(SequenceParameterSet,SPS)、图片参数集(Picture Parameter Set,PPS)、视频参数集(Video ParameterSet,VPS)、条带头、片头、编解码树单元(Coding Tree Unit,CTU)组、编解码单元(CU)、预测单元(PU)或变换单元(Transform Unit,TU)中的信令来启用AMVR过程。
在一些实施例中,并且在示例7的上下文中,在序列参数集(SPS)、图片参数集(PPS)、视频参数集(VPS)、条带头、片头、编解码树单元(CTU)组、编解码单元(CU)、预测单元(PU)或变换单元(TU)中信令通知运动矢量的精度或运动矢量差的精度的允许值集合。在一个示例中,为当前块的每个编解码树单元(CTU)信令通知允许值集合。在另一个示例中,允许值集合基于当前块的编解码模式或大小。在又一个示例中,允许值集合基于条带类型、时域层索引或低延迟检查标志。在又一个示例中,允许值集合基于存储在解码图片缓冲区中的运动矢量的精度。
在上述实施例的一些实施方式中,MVP可以基于当前块的空域或时域邻近块。在上述实施例的其它实施方式中,MVP可以是默认的MVP。
7.所公开的技术的示例实施方式
图26是视频处理装置2600的框图。装置2600可以用于实施本文描述的方法中的一种或多种。装置2600可以体现在智能手机、平板电脑、计算机、物联网(Internet ofThings,IoT)接收器等中。装置2600可以包括一个或多个处理器2602、一个或多个存储器2604和视频处理硬件2606。(多个)处理器2602可以被配置为实施本文档中描述的一种或多种方法(包括但不限于方法2500)。存储器(多个存储器)2604可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件2606可以用于在硬件电路中实施本文档中描述的一些技术。
在一些实施例中,视频编解码方法可以使用如参考图26所述的在硬件平台上实施的装置来实施。
可以使用以下基于条款的格式来描述各种技术和实施例。
1.一种用于视频编解码的方法,包括:
确定使用(a)多个运动矢量差(MVD)精度或(b)自适应运动矢量差分辨率(AMVR)对当前视频块进行仿射编解码,以及
基于该确定,执行当前视频块和当前视频块的比特流表示之间的转换。
2.根据条款1所述的方法,其中,该确定是基于比特流表示中的一个或多个语法元素而做出的。
3.根据条款2所述的方法,其中,基于对当前视频块启用仿射编解码,一个或多个语法元素被选择性地包括在比特流表示中。
4.根据条款1-3中任一项所述的方法,其中,用于仿射帧间模式的MVD精度不同于用于正常帧间模式编解码的MVD精度。
5.根据条款2-4中任一项所述的方法,其中,一个或多个语法元素是使用基于上下文的编解码进行编解码的。
6.根据条款5所述的方法,其中,不同的上下文模型用于当前视频块的仿射帧间编解码和正常帧间模式编解码。
7.根据条款1所述的方法,其中,该确定是基于被包括在比特流表示中以指示AMVR对被仿射编解码的当前视频块的适用性的第一语法元素而做出的。
8.根据条款1所述的方法,其中,该确定是在当前视频块的转换期间禁用对AMVR的使用,或者其中,该确定是比特流表示中不存在第一语法元素,并且其中该转换使用默认运动矢量或默认运动矢量差精度。
9.根据条款8所述的方法,其中,默认精度为1/4像素。
10.根据条款7所述的方法,其中,该确定是基于指示运动矢量差的精度的第二语法元素而做出的。
11.根据条款7所述的方法,其中,在当前视频块的控制点运动矢量为零的情况下,第一语法元素从比特流表示中被排除。
12.根据条款1至11中任一项所述的方法,其中,在该转换期间使用帧内块复制的情况下,AMVR包括第一AMVR方案,以及在该转换期间没有使用帧内块复制模式的情况下,AMVR包括不同的第二AMVR方案。
13.根据条款2至12中任一项所述的方法,其中,语法元素被包括在条带级别或图片级别或序列级别。
14.根据条款1至13中任一项所述的方法,其中,该转换包括从比特流表示生成当前视频块的像素值,或者从当前视频块生成比特流表示。
15.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,该指令在由处理器执行时使得处理器实施条款1至14中任一项中的方法。
16.一种存储在非暂时性计算机可读介质上的计算机程序产品,该计算机程序产品包括用于执行条款1至14中任一项的方法的程序代码。
图27示出了对称模式的示例。
图28是示出其中可以实施本文公开的各种技术的示例视频处理系统2800的框图。各种实施方式可以包括系统2800的一些或全部组件。系统2800可以包括用于接收视频内容的输入2802。视频内容可以以原始或未压缩格式(例如,8或10比特多分量像素值)接收,或者可以以压缩或编码格式接收。输入2802可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括诸如以太网、无源光网络(Passive Optical Network,PON)等有线接口和诸如Wi-Fi或蜂窝接口的无线接口。
系统2800可以包括编解码组件2804,其可以实施本文档中描述的各种编解码或编码方法。编解码组件2804可以降低从输入2802到编解码组件2804的输出的视频的平均比特率,以产生视频的编解码表示。因此,编解码技术有时被称为视频压缩或视频转码技术。编解码组件2804的输出可以被存储,或者经由(如由组件2806表示的)连接的通信传输。组件2808可以使用在输入2802处接收的视频的存储的或通信传送的比特流(或编解码的)表示来生成发送到显示接口2810的像素值或可显示视频。从比特流表示生成用户可观看视频的过程有时被称为视频解压缩。此外,虽然特定视频处理操作被称为“编解码”操作或工具,但是应当理解,编解码工具或操作在编码器处使用,并且将由解码器来执行反转编解码结果的对应的解码工具或操作。
外围总线接口或显示接口的示例可以包括通用串行总线(USB)或高清晰度多媒体接口(High Definition Multimedia Interface,HDMI)或显示端口等。存储接口的示例包括SATA(Serial Advanced Technology Attachment,串行高级技术附件)、PCI、IDE接口等。本文档中描述的技术可以体现在各种电子设备中,诸如移动电话、膝上型电脑、智能手机或能够执行数字数据处理和/或视频显示的其它设备。
图29示出了用于视频处理的示例方法的流程图。该流程图的步骤示出了在本文档第4章节的示例21中讨论的实施例的实施方式。在步骤2910处,该过程在当前视频块和当前视频块的比特流表示之间的转换期间,使用由多个二进制位组成的语法元素用于处理当前视频块,其中,语法元素根据上下文模型而选择,使得第一上下文模型被应用于选择第一语法元素的第一二进制位,并且第二上下文模型被应用于选择除第一语法元素的第一二进制位之外的所有二进制位。
图30示出了用于视频处理的示例方法的流程图。该流程图的步骤示出了在本文档第4章节的示例22中讨论的实施例的实施方式。在步骤3010处,该过程确定使用来自精度集合的精度作为运动矢量(MVD)的目标精度,其中该MVD被计算为与当前视频块相关联的运动矢量和运动矢量预测值(MVP)之间的差。在步骤3020处,该过程响应于检测到目标精度不同于MVP的精度,将MVP的精度转换为目标精度。在步骤3030,该过程在当前视频块的正常帧间模式或仿射帧间模式编解码期间,使用具有目标精度的MVP和MVD来生成重构的运动矢量,其中,重构的运动矢量用于后续视频块的处理。
图31示出了用于视频处理的示例方法的流程图。该流程图的步骤示出了在本文档第4章节的示例22中讨论的实施例的实施方式。在步骤3110处,该过程在视频块和当前视频块的比特流表示之间的转换期间,识别与当前视频块相关联的运动矢量预测值(MVP)的精度不同于运动矢量差(MVD)的精度,其中该MVD被计算为与当前视频块相关联的MVP和运动矢量之间的差。在步骤3120处,该过程响应于该检测,将MVD的精度转换为MVP的精度。在步骤3130处,该过程使用MVP的精度来重构与当前视频块相关联的运动矢量,用于处理后续视频块。
一些实施例现在以基于条款的格式呈现。
A1.一种用于可视媒体处理的方法,包括:
在当前视频块和当前视频块的比特流表示之间的转换期间,使用由多个二进制位组成的语法元素用于处理当前视频块,其中,语法元素根据上下文模型而选择,使得第一上下文模型被应用于选择第一语法元素的第一二进制位,并且第二上下文模型被应用于选择除第一语法元素的第一二进制位之外的所有二进制位。
A2.根据条款A1所述的方法,其中,第一上下文模型是算术编解码,并且第二上下文模型是旁路编解码。
A3.根据条款A1-A2中任一项或多项所述的方法,其中,第一语法元素指示用于当前视频块的仿射编解码的自适应运动矢量差分辨率(AMVR)技术。
A4.根据条款A1-A2中任一项或多项所述的方法,其中,语法元素的多个二进制位是上下文编解码的或旁路编解码的。
A5.根据条款A1-A3中任一项或多项所述的方法,其中,如果第一语法元素是二进制取值的,则第一语法元素是上下文编解码的。
A6.根据条款A1-A3中任一项或多项所述的方法,其中,如果第一语法元素是二进制取值的,则第一语法元素是旁路编解码的。
A7.根据条款A1-A5中任一项或多项所述的方法,其中,只有一个上下文模型用于第一语法元素的第一二进制位的基于上下文模型的编解码。
A8.根据条款A1-A5中任一项或多项所述的方法,其中,多于一个上下文模型用于第一语法元素的第一二进制位的基于上下文模型的编解码。
A9.根据条款A1-A5中任一项或多项所述的方法,其中,基于对当前视频块启用仿射编解码模式,语法元素被选择性地包括在比特流表示中。
A10.根据条款A1-A5中任一项或多项所述的方法,其中,多个运动矢量差(MVD)精度被应用于当前视频块。
A11.根据条款A10所述的方法,其中,自适应运动矢量差分辨率(AMVR)在当前视频块的转换期间被禁用,或者其中,比特流表示中不存在第一语法元素,并且其中该转换使用默认运动矢量或默认运动矢量差精度。
B1.一种用于可视媒体处理的方法,包括:
确定使用来自精度集合的精度作为运动矢量(MVD)的目标精度,其中该MVD被计算为与当前视频块相关联的运动矢量和运动矢量预测值(MVP)之间的差;
响应于检测到目标精度不同于MVP的精度,将MVP的精度转换为目标精度;以及
在当前视频块的正常帧间模式或仿射帧间模式编解码期间,使用具有目标精度的MVP和MVD来生成重构的运动矢量,其中,重构的运动矢量用于后续视频块的处理。
B2.根据条款B1所述的方法,其中,重构的运动矢量具有与具有目标精度的MVP相同的精度。
B3.根据条款B2所述的方法,还包括:
将重构的运动矢量的精度从目标精度转换为1/N亮度样点的精度,其中N为整数。
B4.根据条款B3所述的方法,其中,N等于16。
B5.根据条款B1-B4中任一项所述的方法,其中,用于仿射帧间模式的MVD精度集合不同于用于正常帧间模式的MVD精度集合。
B6.根据条款B1所述的方法,其中,MVP和/或MVD和/或重构的运动矢量的默认精度与参考图片相关联。
B7.根据条款B1-B5中任一项或多项所述的方法,其中,在与当前视频块和可视媒体数据之间的转换相关联的比特流表示中指示目标精度。
B8.根据条款B1-B7中任一项或多项所述的方法,其中,将MVP的精度转换为目标精度包括整数数量的比特的比特移位操作。
B9.根据条款B8所述的方法,其中,整数数量的比特对应于MVP的精度和目标精度之间的差。
B10.根据条款B8所述的方法,其中,整数数量的比特对应于1/N亮度样点的精度和目标精度之间的差。
B11.根据条款B1-B7中任一项或多项所述的方法,其中,MVD的目标精度小于或等于运动矢量的精度。
B12.根据条款B1-B7中任一项或多项所述的方法,其中,将MVP的精度转换为目标精度包括表示为SatShift(MVP,s)的比特移位操作,其中SatShift(MVP,s)被定义为
其中,s对应于MVP的精度和目标精度之间的差,offset0和/或offset1被设置为(1<<n)>>1和/或(1<<(n-1))和/或零。
B13.根据条款B1-B7中任一项或多项所述的方法,其中,将MVP的精度转换为目标精度包括表示为Shift(MVP,s)的比特移位操作,其中Shift(MVP,s)被定义为
Shift(x,n)=(x+offset0)>>n
其中,s对应于MVP的精度和目标精度之间的差,offset0和/或offset1被设置为(1<<n)>>1和/或(1<<(n-1))和/或零。
B14.根据条款B3所述的方法,其中,将重构的运动矢量的精度从目标精度转换为1/N亮度样点的精度包括整数数量的比特的左比特移位操作。
B15.根据条款B13所述的方法,其中,目标精度小于或等于1/N亮度样点的精度。
C1.一种用于可视媒体处理的方法,包括:
在视频块和当前视频块的比特流表示之间的转换期间,识别与当前视频块相关联的运动矢量预测值(MVP)的精度不同于运动矢量差(MVD)的精度,其中该MVD被计算为与当前视频块相关联的MVP和运动矢量之间的差;
响应于该检测,将MVD的精度转换为MVP的精度;以及
使用MVP的精度来重构与当前视频块相关联的运动矢量,用于处理后续视频块。
C2.根据条款C1所述的方法,其中,重构运动矢量产生具有1/N亮度样点的精度的重构的运动矢量,其中N为整数。
C3.根据条款C2所述的方法,其中,N等于16。
D1.一种视频编码器装置,包括处理器,该处理器被配置为实施条款A1-C3中任一项或多项所述的方法。
D2.一种视频解码器装置,包括处理器,该处理器被配置为实施条款A1-C3中任一项或多项所述的方法。
D3.一种其上存储有代码的计算机可读介质,该代码体现用于实施条款A1-C3中任一项或多项所述的方法的处理器可执行指令。
在本文档中提到的各种语法元素(也在VVC标准草案JVET-M1001-v7和JVET-Q2001-v1中讨论)的描述在下面讨论。
alf_ctb_flag
等于1的alf_ctb_flag[cIdx][xCtb>>Log2CtbSize][yCtb>>Log2CtbSize]指定自适应环路滤波器被应用于亮度位置(xCtb,yCtb)处的编解码树单元的由cIdx指示的色彩分量的编解码树块。等于0的alf_ctb_flag[cIdx][xCtb>>Log2CtbSize][yCtb>>Log2CtbSize]指定自适应环路滤波器不应用于亮度位置(xCtb,yCtb)处的编解码树单元的由cIdx指示的色彩分量的编解码树块。
当alf_ctb_flag[cIdx][xCtb>>Log2CtbSize][yCtb>>Log2CtbSize]不存在时,它被推断为等于0。
sao_merge_left_flag
等于1的sao_merge_left_flag指定语法元素sao_type_idx_luma、sao_type_idx_chroma、sao_band_position、sao_eo_class_luma、sao_eo_class_chroma、sao_offset_abs和sao_offset_sign是从左侧CTB的对应语法元素推导的。等于0的sao_merge_left_flag指定这些语法元素不是从左侧CTB的对应语法元素推导的。当sao_merge_left_flag不存在时,它被推断为等于0。
sao_merge_up_flag
等于1的sao_merge_up_flag指定语法元素sao_type_idx_luma、sao_type_idx_chroma、sao_band_position、sao_eo_class_luma、sao_eo_class_chroma、sao_offset_abs和sao_offset_sign是从上方CTB的对应语法元素推导的。等于0的sao_merge_up_flag指定这些语法元素不是从上方CTB的对应语法元素推导的。当sao_merge_up_flag不存在时,它被推断为等于0。
sao_type_idx_luma
sao_type_idx_luma指定亮度分量的偏移类型。阵列SaoTypeIdx[cIdx][rx][ry]指定色彩分量cIdx的位置(rx,ry)处的CTB的如在SAO偏移类型表中指定的偏移类型。SaoTypeIdx[0][rx][ry]的值被推导如下:
-如果sao_type_idx_luma存在,则SaoTypeIdx[0][rx][ry]被设置为等于sao_type_idx_luma。
-否则(sao_type_idx_luma不存在),SaoTypeIdx[0][rx][ry]被推导如下:
-如果sao_merge_left_flag等于1,则SaoTypeIdx[0][rx][ry]被设置为等于SaoTypeIdx[0][rx-1][ry]。
-否则,如果sao_merge_up_flag等于1,则SaoTypeIdx[0][rx][ry]被设置为等于SaoTypeIdx[0][rx][ry-1]。
-否则,SaoTypeIdx[0][rx][ry]被设置为等于0。
SAO偏移类型表
sao_type_idx_chroma
sao_type_idx_chroma指定色度分量的偏移类型。对于等于1..2的cIdx,SaoTypeIdx[cIdx][rx][ry]的值被推导如下:
-如果sao_type_idx_chroma存在,则SaoTypeIdx[cIdx][rx][ry]被设置为等于sao_type_idx_chroma。
-否则(sao_type_idx_chroma不存在),SaoTypeIdx[cIdx][rx][ry]被推导如下:
-如果sao_merge_left_flag等于1,则SaoTypeIdx[cIdx][rx][ry]被设置为等于SaoTypeIdx[cIdx][rx-1][ry]。
-否则,如果sao_merge_up_flag等于1,则SaoTypeIdx[cIdx][rx][ry]被设置为等于SaoTypeIdx[cIdx][rx][ry-1]。
-否则,SaoTypeIdx[cIdx][rx][ry]被设置为等于0。
split_cu_flag
等于0的split_cu_flag指定不划分编解码单元。等于1的split_cu_flag指定如由语法元素split_qt_flag指示的使用四元划分将编解码单元划分为四个编解码单元,或者如由语法元素mtt_split_cu_binary_flag指示的使用二元划分将编解码单元划分为两个编解码单元或使用三元划分将编解码单元划分为三个编解码单元。二元或三元划分可以是垂直的或者水平的,如由语法元素mtt_split_cu_vertical_flag所指示。
当split_cu_flag不存在时,split_cu_flag的值被推断如下:
-如果以下条件中的一个或多个为真,则split_cu_flag的值被推断为等于1:
-x0+cbWidth大于pic_width_in_luma_samples。
-y0+cbHeight大于pic_height_in_luma_samples。
-否则,split_cu_flag的值被推断为等于0。
split_qt_flag
split_qt_flag指定编解码单元是否被划分为具有半水平和垂直尺寸的编解码单元。
当split_qt_flag不存在时,以下适用:
-如果allowSplitQt等于TRUE,则split_qt_flag的值被推断为等于1。
-否则,split_qt_flag的值被推断为等于0。
mtt_split_cu_vertical_flag
等于0的mtt_split_cu_vertical_flag指定编解码单元被水平划分。等于1的mtt_split_cu_vertical_flag指定编解码单元被垂直划分。
当mtt_split_cu_vertical_flag不存在时,它被推断如下:
-如果allowSplitBtHor等于TRUE或者allowSplitTtHor等于TRUE,则mtt_split_cu_vertical_flag的值被推断为等于0。
-否则,mtt_split_cu_vertical_flag的值被推断为等于1。
mtt_split_cu_binary_flag
等于0的mtt_split_cu_binary_flag指定使用三元划分将编解码单元划分为三个编解码单元。等于1的mtt_split_cu_binary_flag指定使用二元划分将编解码单元划分为两个编解码单元。
当mtt_split_cu_binary_flag不存在时,它被推断如下:
-如果allowSplitBtVer等于FALSE并且allowSplitBtHor等于FALSE,
则mtt_split_cu_binary_flag的值被推断为等于0。
-否则,如果allowSplitTtVer等于FALSE并且allowSplitTtHor等于FALSE,则mtt_split_cu_binary_flag的值被推断为等于1。
-否则,如果allowSplitBtHor等于TRUE并且allowSplitTtVer等于TRUE,则mtt_split_cu_binary_flag的值被推断为等于!mtt_split_cu_vertical_flag。
-否则(allowSplitBtVer等于TRUE并且allowSplitTtHor等于TRUE),mtt_split_cu_binary_flag的值被推断为等于mtt_split_cu_vertical_flag。
变量MttSplitMode[x][y][mttDepth]是从mtt_split_cu_vertical_flag的值和从mtt_split_cu_binary_flag的值推导的,如在MttSplitMode表中所定义的,其中x=x0..x0+cbWidth-1并且y=y0..y0+cbHeight-1。
MttSplitMode[x0][y0][mttDepth]表示多类型树内的编解码单元的水平和垂直二元和三元划分。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
MttSplitMode表–对于x=x0..x0+cbWidth-1并且y=y0..y0+cbHeight-1的MttSplitMode[x][y][mttDepth]的规范
当以下所有条件都为真时,对于x=x0..x0+cbWidth-1并且y=y0..y0+cbHeight-1,IsInSmr[x][y]被设置为等于TRUE:
-IsInSmr[x0][y0]等于FALSE
-以下条件之一为真:
-mtt_split_cu_binary_flag等于1,并且cbWidth*cbHeight/2小于32
-mtt_split_cu_binary_flag等于0,并且cbWidth*cbHeight/4小于32
-treeType不等于DUAL_TREE_CHROMA
当IsInSmr[x0][y0]等于TRUE时,对于x=x0..x0+cbWidth–1并且y=y0..y0+cbHeight-1,阵列SmrX[x][y]、SmrY[x][y]、SmrW[x][y]和SmrH[x][y]被推导如下:
SmrX[x][y]=x0
SmrY[x][y]=y0
SmrW[x][y]=cbWidth
SmrH[x][y]=cbHeight
cu_skip_flag
等于1的cu_skip_flag[x0][y0]指定对于当前编解码单元,当解码P或B片组时,在cu_skip_flag[x0][y0]之后,除以下中的一个或多个之外,不再解析其他语法元素:IBC模式标志pred_mode_ibc_flag[x0][y0]、Merge加MVD标志mmvd_flag[x0][y0]、Merge加MVD索引mmvd_merge_flag[x0][y0]、Merge加MVD距离索引mmvddistance_idx[x0][y0]、Merge加MVD方向索引mmvd_direction_idx[x0][y0]、Merge候选索引merge_idx[x0][y0]、基于子块的Merge标志merge_subblock_flag[x0][y0]、基于子块的Merge候选索引merge_subblock_idx[x0][y0]、Merge三角形标志merge_triangle_flag[x0][y0]、以及Merge三角形索引merge_triangle_index[x0][y0];当解码I片组时,在cu_skip_flag[x0][y0]之后,除merge_idx[x0][y0]之外,不再解析其他语法元素。等于0的cu_skip_flag[x0][y0]指定编解码单元不被跳过。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当cu_skip_flag[x0][y0]不存在时,它被推断为等于0。
pred_mode_ibc_flag
等于1的pred_mode_ibc_flag指定当前编解码单元是在IBC预测模式下编解码的。等于0的pred_mode_ibc_flag指定当前编解码单元不是在IBC预测模式下编解码的。
当pred_mode_ibc_flag不存在时,分别地,当解码I片组时,它被推断为等于sps_ibc_enabled_flag的值,以及当解码P或B片组时,它被推断为等于0。
当pred_mode_ibc_flag等于1时,对于x=x0..x0+cbWidth–1并且y=y0..y0+cbHeight-1,变量CuPredMode[x][y]被设置为等于MODE_IBC。
pred_mode_flag
等于0的pred_mode_flag指定当前编解码单元是在帧间预测模式下编解码的。等于1的pred_mode_flag指定当前编解码单元是在帧内预测模式下编解码的。对于x=x0..x0+cbWidth–1并且y=y0..y0+cbHeight-1,变量CuPredMode[x][y]被推导如下:
-如果pred_mode_flag等于0,则CuPredMode[x][y]被设置为等于MODE_INTER。
-否则(pred_mode_flag等于1),CuPredMode[x][y]被设置为等于MODE_INTRA。
当pred_mode_flag不存在时,分别地,当解码I片组时,它被推断为等于1,以及当解码P或B片组时,它被推断为等于0。
intra_luma_ref_idx
intra_luma_ref_idx[x0][y0]指定帧内预测参考线索引。对于x=x0..x0+cbWidth–1并且y=y0..y0+cbHeight-1,变量IntraLumaRefLineIdx[x][y]被设置为等于intra_luma_ref_idx[x0][y0]。
当intra_luma_ref_idx[x0][y0]不存在时,它被推断为等于0。对于x=x0..x0+cbWidth–1并且y=y0..y0+cbHeight-1,变量IntraLumaRefLineIdx[x][y]被设置为等于intra_luma_ref_idx[x0][y0]。
intra_subpartitions_mode_flag
等于1的intra_subpartitions_mode_flag[x0][y0]指定当前帧内编解码单元被分割为NumIntraSubPartitions[x0][y0]个矩形变换块子分割。等于0的intra_subpartitions_mode_flag[x0][y0]指定当前帧内编解码单元不被分割为矩形变换块子分割。
当intra_subpartitions_mode_flag[x0][y0]不存在时,它被推断为等于0。
intra_subpartition_split_flag
intra_subpartitions_split_flag[x0][y0]指定帧内子分割划分类型是水平的还是垂直的。当intra_subpartitions_split_flag[x0][y0]不存在时,它被推断如下:
-如果cbHeight大于MaxTbSizeY,则intra_subpartitions_split_flag[x0][y0]被推断为等于0。
-否则(cbWidth大于MaxTbSizeY),intra_subpartitions_split_flag[x0][y0]被推断为等于1。
变量IntraSubPartitionsSplitType指定用于当前亮度编解码块的划分的类型,如在IntraSubPartitionsSplitType表中所示。IntraSubPartitionsSplitType被推导如下:
-如果intra_subpartitions_mode_flag[x0][y0]等于0,则IntraSubPartitionsSplitType被设置为等于0。
-否则,IntraSubPartitionsSplitType被设置为等于1+intra_subpartitions_split_flag[x0][y0]。
变量IntraSubPartitionsSplitType指定用于当前亮度编解码块的划分的类型,如在IntraSubPartitionsSplitType表中所示。IntraSubPartitionsSplitType被推导如下:
-如果intra_subpartitions_mode_flag[x0][y0]等于0,则IntraSubPartitionsSplitType被设置为等于0。
-否则,IntraSubPartitionsSplitType被设置为等于1+intra_subpartitions_split_flag[x0][y0]。
IntraSubPartitionsSplitType表–与IntraSubPartitionsSplitType的名称关联
IntraSubPartitionsSplitType IntraSubPartitionsSplitType的名称
0 ISP_NO_SPLIT
1 ISP_HOR_SPLIT
2 ISP_VER_SPLIT
变量NumIntraSubPartitions指定帧内亮度编解码块被分成的变换块子分割的数量。NumIntraSubPartitions被推导如下:
-如果IntraSubPartitionsSplitType等于ISP_NO_SPLIT,则NumIntraSubPartitions被设置为等于1。
-否则,如果以下条件之一为真,则NumIntraSubPartitions被设置为等于2:
-cbWidth等于4,并且cbHeight等于8,
-cbWidth等于8,并且cbHeight等于4。
-否则,NumIntraSubPartitions被设置为等于4。
IntraSubPartitionsSplitType表–与IntraSubPartitionsSplitType的名称关联
IntraSubPartitionsSplitType IntraSubPartitionsSplitType的名称
0 ISP_NO_SPLIT
1 ISP_HOR_SPLIT
2 ISP_VER_SPLIT
intra_luma_mpm_flag
intra_luma_mpm_flag[x0][y0]指定亮度样点的帧内预测模式。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。当intra_luma_mpm_flag[x0][y0]等于1时,从邻近的帧内预测编解码单元推断帧内预测模式。
当intra_luma_mpm_flag[x0][y0]不存在时,它被推断为等于1。
当intra_luma_not_planar_flag[x0][y0]不存在时,它被推断为等于1。
intra_chroma_pred_mode
intra_chroma_pred_mode[x0][y0]指定色度样点的帧内预测模式。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
merge_flag
merge_flag[x0][y0]指定当前编解码单元的帧间预测参数是否是从邻近的帧间预测分割推断的。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当merge_flag[x0][y0]不存在时,它被推断如下:
-如果cu_skip_flag[x0][y0]等于1,则merge_flag[x0][y0]被推断为等于1。
-否则,merge_flag[x0][y0]被推断为等于0。
inter_pred_idc
inter_pred_idc[x0][y0]根据帧间预测模式表,指定是将列表0(list0)、列表1(list1)还是双向预测用于当前编解码单元。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当inter_pred_idc[x0][y0]不存在时,它被推断为等于PRED_L0。
帧间预测模式表–与帧间预测模式的名称关联
inter_affine_flag
等于1的inter_affine_flag[x0][y0]指定对于当前编解码单元,当解码P或B片组时,基于仿射模型的运动补偿用于生成当前编解码单元的预测样点。等于0的inter_affine_flag[x0][y0]指定编解码单元不是通过基于仿射模型的运动补偿进行预测的。当inter_affine_flag[x0][y0]不存在时,它被推断为等于0。
cu_affine_type_flag
等于1的cu_affine_type_flag[x0][y0]指定对于当前编解码单元,当解码P或B片组时,基于6参数仿射模型的运动补偿用于生成当前编解码单元的预测样点。等于0的cu_affine_type_flag[x0][y0]指定基于4参数仿射模型的运动补偿用于生成当前编解码单元的预测样点。
MotionMode1Idc[x][y]表示编解码单元的运动模型,如在MotionMode1Idc表中所示。阵列索引x、y指定相对于图片的左上方亮度样点的亮度样点位置(x,y)。
对于x=x0..x0+cbWidth–1并且y=y0..y0+cbHeight-1,变量MotionModelIdc[x][y]被推导如下:
-如果merge_flag[x0][y0]等于1,则以下适用:
MotionModelIdc[x][y]=merge_subblock_flag[x0][y0]
-否则(merge_flag[x0][y0]等于0),以下适用:
MotionModelIdc[x][y]=inter_affine_flag[x0][y0]+cu_affine_type_flag[x0][y0]
MotionModelIdc表–MotionModelIdc[x0][y0]的解释
MotionModelIdc[x][y] 运动补偿的运动模型
0 平移运动
1 4参数仿射运动
2 6参数仿射运动
ref_idx_l0
ref_idx_l0[x0][y0]指定当前编解码单元的列表0参考图片索引。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当ref_idx_l0[x0][y0]不存在时,它被推断如下:
-如果sym_mvd_flag[x0][y0]等于1,则ref_idx_l0[x0][y0]被推断为等于RefIdxSymL0。
-否则(sym_mvd_flag[x0][y0]等于0),ref_idx_l0[x0][y0]被推断为等于0。
mvp_l0_flag
mvp_l0_flag[x0][y0]指定列表0的运动矢量预测值索引,其中x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当mvp_l0_flag[x0][y0]不存在时,它被推断为等于0。
ref_idx_l1
ref_idx_l1[x0][y0]具有与ref_idx_l0相同的语义,其中l0、L0和列表0分别由l1、L1和列表1替换。
mvp_l1_flag
mvp_l1_flag[x0][y0]具有与mvp_l0_flag相同的语义,其中l0和列表0分别由l1和列表1替换。
amvr_flag
amvr_flag[x0][y0]指定运动矢量差的分辨率。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。等于0的amvr_flag[x0][y0]指定运动矢量差的分辨率为亮度样点的1/4。等于1的amvr_flag[x0][y0]指定运动矢量差的分辨率由amvr_precision_flag[x0][y0]进一步指定。
当amvr_flag[x0][y0]不存在时,它被推断如下:
-如果CuPredMode[x0][y0]等于MODE_IBC,则amvr_flag[x0][y0]被推断为等于1。
-否则(CuPredMode[x0][y0]不等于MODE_IBC),amvr_flag[x0][y0]被推断为等于0。
amvr_precision_flag
等于0的amvr_precision_flag[x0][y0]指定如果inter_affine_flag[x0][y0]等于0,则运动矢量差的分辨率为一个整数亮度样点,否则为亮度样点的1/16。等于1的amvr_precision_flag[x0][y0]指定如果inter_affine_flag[x0][y0]等于0,则运动矢量差的分辨率为四个亮度样点,否则为一个整数亮度样点。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当amvr_precision_flag[x0][y0]不存在时,它被推断为等于0。
运动矢量差被修改如下:
-如果inter_affine_flag[x0][y0]等于0,则推导变量MvShift,并且变量MvdL0[x0][y0][0]、MvdL0[x0][y0][1]、MvdL1[x0][y0][0]、MvdL1[x0][y0][1]被修改如下:
MvShift=(amvr_flag[x0][y0]+amvr_precision_flag[x0][y0])<<1MvdL0[x0][y0][0]=MvdL0[x0][y0][0]<<(MvShift+2)MvdL0[x0][y0][1]=MvdL0[x0][y0][1]<<(MvShift+2)MvdL1[x0][y0][0]=MvdL1[x0][y0][0]<<(MvShift+2)MvdL1[x0][y0][1]=MvdL1[x0][y0][1]<<(MvShift+2)
-否则(inter_affine_flag[x0][y0]等于1),则推导变量MvShift,并且变量MvdCpL0[x0][y0][0][0]、MvdCpL0[x0][y0][0][1]、MvdCpL0[x0][y0][1][0]、MvdCpL0[x0][y0][1][1]、MvdCpL0[x0][y0][2][0]和MvdCpL0[x0][y0][2][1]被修改如下:
MvShift=amvr_precision_flag[x0][y0]?(amvr_precision_flag[x0][y0]<<1):(-(amvr_flag[x0][y0]<<1)))MvdCpL0[x0][y0][0][0]=MvdCpL0[x0][y0][0][0]<<(MvShift+2)MvdCpL1[x0][y0][0][1]=MvdCpL1[x0][y0][0][1]<<(MvShift+2)MvdCpL0[x0][y0][1][0]=MvdCpL0[x0][y0][1][0]<<(MvShift+2)MvdCpL1[x0][y0][1][1]=MvdCpL1[x0][y0][1][1]<<(MvShift+2)MvdCpL0[x0][y0][2][0]=MvdCpL0[x0][y0][2][0]<<(MvShift+2)MvdCpL1[x0][y0][2][1]=MvdCpL1[x0][y0][2][1]<<(MvShift+2)
gbi_idx
gbi_idx[x0][y0]指定利用CU权重的双向预测的权重索引。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当gbi_idx[x0][y0]不存在时,它被推断为等于0。
cu_cbf
等于1的cu_cbf指定当前编解码单元存在transform_tree()语法结构。等于0的cu_cbf指定当前编解码单元不存在transform_tree()语法结构。
当cu_cbf不存在时,它被推断如下:
-如果cu_skip_flag[x0][y0]等于1,则cu_cbf被推断为等于0。
-否则,cu_cbf被推断为等于1。
cu_sbt_flag
等于1的cu_sbt_flag指定对于当前编解码单元,使用子块变换。等于0的cu_sbt_flag指定对于当前编解码单元,不使用子块变换。
当cu_sbt_flag不存在时,其值被推断为等于0。注意–:当使用子块变换时,编解码单元被划分为两个变换单元;一个变换单元具有残差数据,另一个不具有残差数据。
cu_sbt_quad_flag
等于1的cu_sbt_quad_flag指定对于当前编解码单元,子块变换包括当前编解码单元的1/4尺寸的变换单元。等于0的cu_sbt_quad_flag指定对于当前编解码单元,子块变换包括当前编解码单元的1/2尺寸的变换单元。
当cu_sbt_quad_flag不存在时,其值被推断为等于0。
cu_sbt_horizontal_flag
等于1的cu_sbt_horizontal_flag指定当前编解码单元被水平划分为2个变换单元。等于0的cu_sbt_horizontal_flag[x0][y0]指定当前编解码单元被垂直划分为2个变换单元。
当cu_sbt_horizontal_flag不存在时,其值被推导如下:
-如果cu_sbt_quad_flag等于1,则cu_sbt_horizontal_flag被设置为等于allowSbtHorQ。
-否则(cu_sbt_quad_flag等于0),cu_sbt_horizontal_flag被设置为等于allowSbtHorH。
cu_sbt_pos_flag
等于1的cu_sbt_pos_flag指定当前编解码单元中的第一变换单元的tu_cbf_luma、tu_cbf_cb和tu_cbf_cr不存在于比特流中。等于0的cu_sbt_pos_flag指定当前编解码单元中的第二变换单元的tu_cbf_luma、tu_cbf_cb和tu_cbf_cr不存在于比特流中。
变量SbtNumFourthsTb0被推导如下:
sbtMinNumFourths=cu_sbt_quad_flag?1:2
SbtNumFourthsTb0=cu_sbt_pos_flag?(4-sbtMinNumFourths):sbtMinNumFourths
mmvd_flag
等于1的mmvd_flag[x0][y0]指定具有运动矢量差的Merge模式用于生成当前编解码单元的帧间预测参数。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当mmvd_flag[x0][y0]不存在时,它被推断为等于0。
mmvd_merge_flag
mmvd_merge_flag[x0][y0]指定是Merge候选列表中的第一(0)还是第二(1)候选与从mmvd_distance_idx[x0][y0]和mmvd_direction_idx[x0][y0]推导的运动矢量差一起使用。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
mmvd_distance_idx
mmvd_distance_idx[x0][y0]指定用于推导MmvdDistance[x0][y0]的索引,如在MmvdDistance表中所指定的。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
Merge加MVD偏移MmvdOffset[x0][y0]的两个分量被推导如下:MmvdOffset[x0][y0][0]=(MmvdDistance[x0][y0]<<2)*MmvdSign[x0][y0][0]
MmvdOffset[x0][y0][1]=(MmvdDistance[x0][y0]<<2)*MmvdSign[x0][y0][1]
MmvdDistance表–基于mmvd_distance_idx[x0][y0]的MmvdDistance[x0][y0]的规范
/>
ciip_flag
ciip_flag[x0][y0]指定组合的帧间图片Merge和帧内图片预测是否被应用于当前编解码单元。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当ciip_flag[x0][y0]不存在时,它被推断为等于0。
语法元素ciip_luma_mpm_flag[x0][y0]和ciip_luma_mpm_idx[x0][y0]指定组合的帧间图片Merge和帧内图片预测中使用的亮度样点的帧内预测模式。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当ciip_luma_mpm_flag[x0][y0]不存在时,它被推断如下:
-如果cbWidth大于2*cbHeight或者cbHeight大于2*cbWidth,则ciip_luma_mpm_flag[x0][y0]被推断为等于1。
-否则,ciip_luma_mpm_flag[x0][y0]被推断为等于0。
ciip_luma_mpm_flag
语法元素ciip_luma_mpm_flag[x0][y0]和ciip_luma_mpm_idx[x0][y0]指定组合的帧间图片Merge和帧内图片预测中使用的亮度样点的帧内预测模式。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当ciip_luma_mpm_flag[x0][y0]不存在时,它被推断如下:
-如果cbWidth大于2*cbHeight或者cbHeight大于2*cbWidth,则ciip_luma_mpm_flag[x0][y0]被推断为等于1。
-否则,ciip_luma_mpm_flag[x0][y0]被推断为等于0。
merge_subblock_flag
merge_subblock_flag[x0][y0]指定当前编解码单元的基于子块的帧间预测参数是否是从邻近块推断的。阵列索引x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。当merge_subblock_flag[x0][y0]不存在时,它被推断为等于0。
merge_subblock_idx
merge_subblock_idx[x0][y0]指定基于子块的Merge候选列表的Merge候选索引,其中x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当merge_subblock_idx[x0][y0]不存在时,它被推断为等于0。
merge_triangle_flag
等于1的merge_triangle_flag[x0][y0]指定对于当前编解码单元,当解码B片组时,基于三角形形状的运动补偿用于生成当前编解码单元的预测样点。等于0的merge_triangle_flag[x0][y0]指定编解码单元不是通过基于三角形形状的运动补偿进行预测的。当merge_triangle_flag[x0][y0]不存在时,它被推断为等于0。
merge_triangle_idx0
merge_triangle_idx0[x0][y0]指定基于三角形形状的运动补偿候选列表的第一Merge候选索引,其中x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当merge_triangle_idx0[x0][y0]不存在时,它被推断为等于0。
merge_triangle_idx1
merge_triangle_idx1[x0][y0]指定基于三角形形状的运动补偿候选列表的第二Merge候选索引,其中x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当merge_triangle_idx1[x0][y0]不存在时,它被推断为等于0。
merge_idx
merge_idx[x0][y0]指定Merge候选列表的Merge候选索引,其中x0、y0指定所考虑的编解码块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当merge_idx[x0][y0]不存在时,它被推断如下:
-如果mmvd_flag[x0][y0]等于1,则merge_idx[x0][y0]被推断为等于mmvd_merge_flag[x0][y0]。
-否则(mmvd_flag[x0][y0]等于0),merge_idx[x0][y0]被推断为等于0。
abs_mvd_greater0_flag
abs_mvd_greater0_flag[compIdx]指定运动矢量分量差的绝对值是否大于0。
abs_mvd_greater1_flag
abs_mvd_greater1_flag[compIdx]指定运动矢量分量差的绝对值是否大于1。
当abs_mvd_greater1_flag[compIdx]不存在时,它被推断为等于0。
tu_cbf_luma
等于1的tu_cbf_luma[x0][y0]指定亮度变换块包含不等于0的一个或多个变换系数等级。阵列索引x0、y0指定所考虑的变换块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当当前CU中不存在tu_cbf_luma[x0][y0]时,其值被推断如下:
-如果IntraSubPartitionsSplitType等于ISP_NO_SPLIT,则tu_cbf_luma[x0][y0]被推断为等于0。
-否则,tu_cbf_luma[x0][y0]被推断为等于1。
tu_cbf_cb
等于1的tu_cbf_cb[x0][y0]指定Cb变换块包含不等于0的一个或多个变换系数等级。阵列索引x0、y0指定所考虑的变换块的左上方位置(x0,y0)。
当当前CU中不存在tu_cbf_cb[x0][y0]时,其值被推断为等于0。
tu_cbf_cr
等于1的tu_cbf_cr[x0][y0]指定Cr变换块包含不等于0的一个或多个变换系数等级。阵列索引x0、y0指定所考虑的变换块的左上方位置(x0,y0)。
当当前CU中不存在tu_cbf_cr[x0][y0]时,其值被推断为等于0。
cu_qp_delta_abs
cu_qp_delta_abs指定当前编解码单元的量化参数与其预测之间的差CuQpDeltaVal的绝对值。
transform_skip_flag
transform_skip_flag[x0][y0]指定是否对亮度变换块应用变换。阵列索引x0、y0指定所考虑的变换块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。等于1的transform_skip_flag[x0][y0]指定不对亮度变换块应用变换。等于0的transform_skip_flag[x0][y0]指定是否对亮度变换块应用变换的决定取决于其它语法元素。当transform_skip_flag[x0][y0]不存在时,它被推断为等于0。
tu_mts_idx
tu_mts_idx[x0][y0]指定沿着相关联的亮度变换块的水平和垂直方向将哪些变换核应用于残差样点。阵列索引x0、y0指定所考虑的变换块的左上方亮度样点相对于图片的左上方亮度样点的位置(x0,y0)。
当tu_mts_idx[x0][y0]不存在时,它被推断为等于0。
last_sig_coeff_x_prefix
last_sig_coeff_x_prefix指定变换块内以扫描顺序的最后一个显著系数的列位置的前缀。last_sig_coeff_x_prefix的值应当在0到(log2TbWidth<<1)-1的范围内,包括0和(log2TbWidth<<1)-1。
当last_sig_coeff_x_prefix不存在时,它被推断为0。
last_sig_coeff_y_prefix
last_sig_coeff_y_prefix指定变换块内以扫描顺序的最后一个显著系数的行位置的前缀。last_sig_coeff_y_prefix的值应当在0到(log2TbHeight<<1)-1的范围内,包括0和(log2TbHeight<<1)-1。
当last_sig_coeff_y_prefix不存在时,它被推断为0。
coded_sub_block_flag
coded_sub_block_flag[xS][yS]为当前变换块内的位置(xS,yS)处的子块指定以下内容,其中子块是16个变换系数等级的(4×4)阵列:
-如果coded_sub_block_flag[xS][yS]等于0,则位置(xS,yS)处的子块的16个变换系数等级被推断为等于0。
-否则(coded_sub_block_flag[xS][yS]等于1),以下适用:
-如果(xS,yS)等于(0,0)并且(LastSignificantCoeffX,LastSignificantCoeffY)不等于(0,0),则位置(xS,yS)处的子块存在16个sig_coeff_flag语法元素中的至少一个。
-否则,位置(xS,yS)处的子块的16个变换系数等级中的至少一个具有非零值。
当coded_sub_block_flag[xS][yS]不存在时,它被推断如下:
-如果以下条件中的一个或多个为真,则coded_sub_block_flag[xS][yS]被推断为等于1:
-(xS,yS)等于(0,0)。
-(xS,yS)等于(LastSignificantCoeffX>>2,LastSignificantCoeffY>>2)。
-否则,coded_sub_block_flag[xS][yS]被推断为等于0。
sig_coeff_flag
sig_coeff_flag[xC][yC]如下为当前变换块内的变换系数位置(xC,yC)指定位置(xC,yC)处的对应变换系数等级是否为非零:
-如果sig_coeff_flag[xC][yC]等于0,则位置(xC,yC)处的变换系数等级被设置为等于0。
-否则(sig_coeff_flag[xC][yC]等于1),位置(xC,yC)处的变换系数等级具有非零值。
当sig_coeff_flag[xC][yC]不存在时,它被推断如下:
-如果(xC,yC)是以扫描顺序的最后一个显著位置(LastSignificantCoeffX,LastSignificantCoeffY)或者所有以下条件均为真,则sig_coeff_flag[xC][yC]被推断为等于1:
-(xC&3,yC&3)等于(0,0)。
-inferSbDcSigCoeffFlag等于1。
-coded_sub_block_flag[xS][yS]等于1。
-否则,sig_coeff_flag[xC][yC]被推断为等于0。
par_level_flag
par_level_flag[n]指定扫描位置n处的变换系数等级的奇偶性。当par_level_flag[n]不存在时,它被推断为等于0。
abs_level_gt1_flag
abs_level_gt1_flag[n]指定(扫描位置n处的)变换系数等级的绝对值是否大于1。当abs_level_gt1_flag[n]不存在时,它被推断为等于0。
abs_level_gt3_flag
abs_level_gt3_flag[n]指定(扫描位置n处的)变换系数等级的绝对值是否大于3。当abs_level_gt3_flag[n]不存在时,它被推断为等于0。
在本文档中,术语“视频处理”或“可视媒体处理”或“可视媒体的处理”可以指视频编码、视频解码、视频压缩或视频解压缩。例如,视频压缩算法可以在从视频的像素表示到对应的比特流表示的转换期间被应用,反之亦然。当前视频块的比特流表示可以例如对应于比特流内并置的或分散在不同地方的比特,如通过语法定义的。例如,宏块可以根据变换和编解码误差残差值并且也使用比特流中的头和其它字段中的比特进行编码。此外,在转换期间,解码器可以基于如在上述解决方案中所述的确定,在知道一些字段可能存在或不存在的情况下解析比特流。类似地,编码器可以确定是否将包括特定语法字段,并通过包括或从编解码表示中排除该语法字段来相应地生成编解码表示。
从前面可以理解,为了说明的目的,本文已经描述了当前公开的技术的特定实施例,但是在不脱离本发明的范围的情况下,可以进行各种修改。因此,当前公开的技术不受除了所附权利要求之外的限制。
本专利文档中描述的主题和功能操作的实施方式可以在各种系统、数字电子电路中被实施,或者在计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同物)中被实施,或者在它们中的一个或多个的组合中被实施。本说明书中描述的主题的实施方式可以被实施为一个或多个计算机程序产品,即编码在有形和非暂时性计算机可读介质上的计算机程序指令的一个或多个模块,该计算机程序指令用于由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的物质的组合、或它们中的一个或多个的组合。术语“数据处理单元”或“数据处理装置”包含用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机、或多个处理器或计算机。除了硬件之外,装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或它们中的一个或多个的组合的代码。
计算机程序(也已知为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言(包括编译或解释语言)编写,并且其可以以任何形式部署,包括作为独立程序或作为适合在计算环境中使用的模块、组件、子例程或其他单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于所讨论的程序的单个文件中,或存储在多个协调文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署以在一个计算机上或在位于一个站点上或跨多个站点分布并通过通信网络互连的多个计算机上执行。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以被实施为专用逻辑电路,例如,FPGA(Field Programmable Gate Array,现场可编程门阵列)或ASIC(Application SpecificIntegrated Circuit,专用集成电路)。
适合于执行计算机程序的处理器包括例如通用和专用微处理器、以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘),或可操作地耦合以从该一个或多个大容量存储设备接收数据或向该一个或多个大容量存储设备传递数据、或者从其接收数据并向其传递数据。然而,计算机不需要这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
本说明书以及附图旨在被认为仅是示例性的,其中示例性意味着示例。如本文所使用的,“或”的使用旨在包括“和/或”,除非上下文另外清楚地指示。
虽然本专利文档包含许多细节,但这些细节不应被解释为对任何发明或可能要求保护的范围的限制,而是作为特定于特定发明的特定实施例的特征的描述。在本专利文档中在单独的实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合实施。此外,尽管特征可以在上面描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从组合排除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变化。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为需要以所示的特定顺序或以先后顺序执行这样的操作或者执行所有示出的操作以实现期望的结果。此外,在本专利文档中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这样的分离。
仅描述了一些实施方式和示例,并且可以基于本专利文档中描述和示出的内容来进行其他实施方式、增强和变化。

Claims (12)

1.一种用于可视媒体处理的方法,包括:
在当前视频块和所述当前视频块的比特流之间的转换期间,使用由多个二进制位组成的语法元素用于处理所述当前视频块,其中,所述语法元素根据上下文模型而选择,使得第一上下文模型被应用于选择第一语法元素的第一二进制位,并且第二上下文模型被应用于选择除所述第一语法元素的第一二进制位之外的所有二进制位,
其中,所述第一语法元素指示在所述当前视频块的仿射编解码中是否应用自适应运动矢量差分辨率AMVR技术,并且
其中,当在所述当前视频块中不使用仿射编解码的运动矢量差MVD精度时,第一语法元素不被包括在所述比特流中,并且
其中,基于对所述当前视频块启用仿射编解码模式,所述第一语法元素被包括在所述比特流中。
2.根据权利要求1所述的方法,其中,所述第一上下文模型是算术编解码,并且所述第二上下文模型是旁路编解码。
3.根据权利要求1-2中任一项所述的方法,其中,所述语法元素的多个二进制位是上下文编解码的或旁路编解码的。
4.根据权利要求1-2中任一项所述的方法,其中,如果所述第一语法元素是二进制取值的,则所述第一语法元素是上下文编解码的。
5.根据权利要求1-2中任一项所述的方法,其中,如果所述第一语法元素是二进制取值的,则所述第一语法元素是旁路编解码的。
6.根据权利要求1-2中任一项所述的方法,其中,只有一个上下文模型用于所述第一语法元素的第一二进制位的基于上下文模型的编解码。
7.根据权利要求1-2中任一项所述的方法,其中,多于一个上下文模型用于所述第一语法元素的第一二进制位的基于上下文模型的编解码。
8.根据权利要求1-2中任一项所述的方法,其中,多个运动矢量差MVD精度被应用于所述当前视频块。
9.根据权利要求8所述的方法,其中,自适应运动矢量差分辨率AMVR在所述当前视频块的转换期间被禁用,或者其中,所述比特流中不存在所述第一语法元素,并且其中所述转换使用默认运动矢量或默认运动矢量差精度。
10.一种视频编码器装置,包括处理器,所述处理器被配置为实施权利要求1-9中任一项所述的方法。
11.一种视频解码器装置,包括处理器,所述处理器被配置为实施权利要求1-9中任一项所述的方法。
12.一种其上存储有代码的计算机可读介质,所述代码体现用于实施权利要求1-9中任一项所述的方法的处理器可执行指令。
CN202080025292.8A 2019-03-27 2020-03-27 具有自适应运动矢量分辨率的仿射模式的熵编解码 Active CN113678444B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CNPCT/CN2019/079962 2019-03-27
CN2019079962 2019-03-27
PCT/CN2020/081580 WO2020192749A1 (en) 2019-03-27 2020-03-27 Entropy coding for affine mode with adaptive motion vector resolution

Publications (2)

Publication Number Publication Date
CN113678444A CN113678444A (zh) 2021-11-19
CN113678444B true CN113678444B (zh) 2023-08-18

Family

ID=72608499

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202080025292.8A Active CN113678444B (zh) 2019-03-27 2020-03-27 具有自适应运动矢量分辨率的仿射模式的熵编解码
CN202080025121.5A Pending CN113661709A (zh) 2019-03-27 2020-03-27 仿射高级运动矢量预测中的运动信息精度对齐

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202080025121.5A Pending CN113661709A (zh) 2019-03-27 2020-03-27 仿射高级运动矢量预测中的运动信息精度对齐

Country Status (2)

Country Link
CN (2) CN113678444B (zh)
WO (2) WO2020192747A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023523638A (ja) 2020-05-01 2023-06-06 北京字節跳動網絡技術有限公司 分割構文のためのエントロピーコーディング
WO2023179676A1 (en) * 2022-03-23 2023-09-28 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104221374A (zh) * 2012-04-11 2014-12-17 高通股份有限公司 在视频译码中分群经旁路译码语法元素
CN104303506A (zh) * 2012-05-29 2015-01-21 联发科技股份有限公司 自适应采样点偏移信息的编解码装置及方法
CN104768016A (zh) * 2014-01-02 2015-07-08 联发科技股份有限公司 深度区块的深度编码方法
WO2015131388A1 (en) * 2014-03-07 2015-09-11 Qualcomm Incorporated Simplification of depth intra mode coding in 3d video coding
CN109417631A (zh) * 2016-06-30 2019-03-01 交互数字Vc控股公司 利用自适应运动信息细化的视频编码

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100924850B1 (ko) * 2002-01-24 2009-11-02 가부시키가이샤 히타치세이사쿠쇼 동화상 신호의 부호화 방법 및 복호화 방법
US8542727B2 (en) * 2007-12-31 2013-09-24 Intel Corporation Systems and apparatuses for performing CABAC parallel encoding and decoding
WO2012134246A2 (ko) * 2011-04-01 2012-10-04 엘지전자 주식회사 엔트로피 디코딩 방법 및 이를 이용하는 디코딩 장치
US10123053B2 (en) * 2011-05-23 2018-11-06 Texas Instruments Incorporated Acceleration of bypass binary symbol processing in video coding
US9088796B2 (en) * 2011-11-07 2015-07-21 Sharp Kabushiki Kaisha Video decoder with enhanced CABAC decoding
US10531116B2 (en) * 2014-01-09 2020-01-07 Qualcomm Incorporated Adaptive motion vector resolution signaling for video coding
US20150264348A1 (en) * 2014-03-17 2015-09-17 Qualcomm Incorporated Dictionary coding of video content
KR102311815B1 (ko) * 2014-06-19 2021-10-13 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 통합된 인트라 블록 카피 및 인터 예측 모드
US9918105B2 (en) * 2014-10-07 2018-03-13 Qualcomm Incorporated Intra BC and inter unification
KR20180059443A (ko) * 2015-09-24 2018-06-04 엘지전자 주식회사 영상 코딩 시스템에서 움직임 벡터 정제 기반 인터 예측 방법 및 장치
US20190028731A1 (en) * 2016-01-07 2019-01-24 Mediatek Inc. Method and apparatus for affine inter prediction for video coding system
EP3301918A1 (en) * 2016-10-03 2018-04-04 Thomson Licensing Method and apparatus for encoding and decoding motion information
US10979732B2 (en) * 2016-10-04 2021-04-13 Qualcomm Incorporated Adaptive motion vector precision for video coding
US10448010B2 (en) * 2016-10-05 2019-10-15 Qualcomm Incorporated Motion vector prediction for affine motion models in video coding
WO2018110203A1 (ja) * 2016-12-16 2018-06-21 シャープ株式会社 動画像復号装置、および動画像符号化装置
MX2019007219A (es) * 2016-12-22 2019-09-05 Kt Corp Metodo y aparato para procesar señales de video.
CN110651474B (zh) * 2017-05-18 2022-02-18 联发科技股份有限公司 用于视频编解码的运动向量限制方法和装置
US10602180B2 (en) * 2017-06-13 2020-03-24 Qualcomm Incorporated Motion vector prediction

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104221374A (zh) * 2012-04-11 2014-12-17 高通股份有限公司 在视频译码中分群经旁路译码语法元素
CN104303506A (zh) * 2012-05-29 2015-01-21 联发科技股份有限公司 自适应采样点偏移信息的编解码装置及方法
CN104768016A (zh) * 2014-01-02 2015-07-08 联发科技股份有限公司 深度区块的深度编码方法
WO2015131388A1 (en) * 2014-03-07 2015-09-11 Qualcomm Incorporated Simplification of depth intra mode coding in 3d video coding
CN109417631A (zh) * 2016-06-30 2019-03-01 交互数字Vc控股公司 利用自适应运动信息细化的视频编码

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Non-CE4: Unified context model of AMVR and Affine AMVR";Yu-Ciao Yang;《Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 14th Meeting: Geneva, CH, 19–27 March 2019》;第1-3页 *

Also Published As

Publication number Publication date
WO2020192747A1 (en) 2020-10-01
CN113661709A (zh) 2021-11-16
WO2020192749A1 (en) 2020-10-01
CN113678444A (zh) 2021-11-19

Similar Documents

Publication Publication Date Title
CN110933421B (zh) 具有自适应运动矢量分辨率的仿射模式的语法重用
CN110944195B (zh) 具有自适应运动矢量分辨率的运动矢量的修改
CN113711609B (zh) 利用光流的预测细化过程中的增量运动矢量
CN111010569B (zh) Bio中的时间梯度计算的改善
US11330289B2 (en) Context for coding affine mode adaptive motion vector resolution
CN110809155A (zh) 使用更新的运动信息的限制
WO2020156517A1 (en) Fast algorithms for symmetric motion vector difference coding mode
CN110740332B (zh) 基于更新的运动矢量的运动预测
CN113678444B (zh) 具有自适应运动矢量分辨率的仿射模式的熵编解码
CN114503596B (zh) 运动矢量细化和其他编解码工具之间的相互作用
CN111010580B (zh) 基于运动信息的尺寸限制
CN113424534A (zh) 自适应运动矢量分辨率的多个语法元素
WO2023274360A1 (en) Utilization of recursive prediction unit in video coding
CN110809164A (zh) Bio中的mv精度
CN110881124A (zh) 两步帧间预测
WO2023274302A1 (en) Recursive prediction unit in video coding

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
GR01 Patent grant
GR01 Patent grant