CN112119636A - 视频编码中高精度运动矢量的存储 - Google Patents

视频编码中高精度运动矢量的存储 Download PDF

Info

Publication number
CN112119636A
CN112119636A CN201980031435.3A CN201980031435A CN112119636A CN 112119636 A CN112119636 A CN 112119636A CN 201980031435 A CN201980031435 A CN 201980031435A CN 112119636 A CN112119636 A CN 112119636A
Authority
CN
China
Prior art keywords
motion vector
block
video data
video
precision
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
CN201980031435.3A
Other languages
English (en)
Inventor
Y-W.陈
W-J.钱
M.卡尔切维茨
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.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN112119636A publication Critical patent/CN112119636A/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/513Processing of motion vectors
    • 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
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • 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/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/33Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
    • 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/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding

Landscapes

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

Abstract

视频编码器和视频解码器配置为基于运动矢量精度和运动矢量比特深度中的一个或多个将运动矢量存储和修正到有效范围。例如,视频解码器可以确定用于第一视频数据块的第一运动矢量,缩放第一运动矢量以产生缩放的运动矢量,基于第一运动矢量的第一比特深度和第一运动矢量的第一运动矢量精度来确定第一有效运动矢量范围,将缩放的运动矢量裁剪为第一有效运动矢量范围以产生第一裁剪的运动矢量,以及使用第一裁剪的运动矢量解码第一视频数据块。

Description

视频编码中高精度运动矢量的存储
本申请要求于2019年5月9日提交的美国专利申请No.16/408,217的优先权,其要求于2018年5月12日提交的美国临时申请No.62/670,763的权益,其全部内容通过引用合并于此。
技术领域
本公开涉及视频编码和视频解码。
背景技术
数字视频能力可以结合到大范围的设备中,包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(PDA)、便携式或台式计算机、平板计算机、电子书阅读器、数码摄像机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏控制台、蜂窝或卫星无线电电话、所谓的“智能电话”、视频电话会议设备、视频流设备和类似。数字视频设备实现视频编码技术,诸如由MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4第10部分、高级视频编码(AVC)、ITU-T H.265/高效视频编码(HEVC)以及这些标准的扩展定义的标准中描述的那些。通过实现这样的视频编码技术,视频设备可以更有效地发送、接收、编码、解码和/或存储数字视频信息。
视频编码技术包括空间(图片内)预测和/或时间(图片间)预测,以减少或移除视频序列中固有的冗余。对于基于块的视频编码,视频切片(例如,视频图片或视频图片的一部分)可以被划分成视频块,其也可以被称为编码树单元(CTU)、编码单元(CU)和/或编码节点。相对于同一图片中的相邻块中的参考样本,使用空间预测来编码图片的帧内编码(I)切片中的视频块。图片的帧间编码(P或B)切片中的视频块可以使用相对于同一图片中的相邻块中的参考样本的空间预测,或相对于其他参考图片中的参考样本的时间预测。图片可以被称为帧,并且参考图片可以被称为参考帧。
发明内容
一般而言,本公开描述了用于帧间预测中的运动矢量的存储和修正的技术。具体地,本公开描述了用于存储、处理和修正运动矢量的技术,该运动矢量可以以多种不同的运动矢量精度(例如,4像素(4-pel)、1像素、1/4像素、1/16像素等)发信号和/或被导出,并且可以存储在一个或多个运动矢量比特深度(bit-depth)中(例如,16比特、18比特、24比特等)。本公开的技术可以允许视频编码器(例如,视频编码器和视频解码器)保持所谓的高精度运动矢量(例如,以相对较高的运动矢量精度发信号和/或导出的运动矢量)的高精度,即使运动矢量的分量(例如,x和y分量)的可能值的有效范围随着运动矢量精度和运动矢量比特深度的变化而变化。
在一些示例中,视频编码器可以配置为基于运动矢量的运动矢量精度和运动矢量的分量将被存储在存储器中的运动矢量比特深度中的一个或多个,来修正和/或裁剪(clip)运动矢量的分量的值。即,运动矢量精度和运动矢量比特深度可以定义在给定的运动矢量精度和/或运动矢量比特深度下运动矢量的分量可能具有的码字值的有效范围。在一些示例中,视频编码器可以对运动矢量应用进程,该进程可以使得运动矢量的分量的值超出这样的有效范围。这样的进程的示例可以包括运动矢量缩放(例如,当使用时间运动矢量候选或仿射(affine)模式时)或运动矢量细化(refinement)(例如,当执行双向(bilateral)匹配进程时)。当视频编码器确定修正的运动矢量的分量值超出该运动矢量的有效范围时,视频编码器可以配置为裁剪该分量的值。
在一个示例中,本公开描述了一种配置为解码视频数据的装置,该装置包括配置为存储视频数据的存储器,以及与该存储器通信的一个或多个处理器,一个或多个处理器在电路中实现。在一个示例中,一个或多个处理器配置为确定用于第一视频数据块的第一运动矢量,缩放第一运动矢量以产生缩放的运动矢量,基于第一运动矢量的第一比特深度和第一运动矢量的第一运动矢量精度确定第一有效运动矢量范围,将缩放的运动矢量裁剪到第一有效运动矢量范围以产生第一裁剪的运动矢量,以及使用第一裁剪的运动矢量解码第一视频数据块。
在另一示例中,本公开描述了一种用于解码视频数据的方法,该方法包括:确定用于第一视频数据块的第一运动矢量,缩放第一运动矢量以产生缩放的运动矢量,基于第一运动矢量的第一比特深度和第一运动矢量的第一运动矢量精度确定第一有效运动矢量范围,将缩放的运动矢量裁剪到第一有效运动矢量范围以产生第一裁剪的运动矢量,以及使用第一裁剪的运动矢量解码第一视频数据块。
在另一示例中,本公开描述了一种非暂时性计算机可读存储介质,其存储指令,该指令在被执行时使得一个或多个处理器配置为解码视频数据以确定用于第一视频数据块的第一运动矢量,缩放第一运动矢量以产生缩放的运动矢量,基于第一运动矢量的第一比特深度和第一运动矢量的第一运动矢量精度确定第一有效运动矢量范围,将缩放的运动矢量裁剪到第一有效运动矢量范围以产生第一裁剪的运动矢量,以及使用第一裁剪的运动矢量解码第一视频数据块。
在另一示例中,本公开描述了一种配置为编码视频数据的装置,该装置包括配置为存储视频数据的存储器,以及与该存储器通信的一个或多个处理器,一个或多个处理器在电路中实现。在一个示例中,一个或多个处理器配置为确定第一视频数据块的第一运动矢量,缩放第一运动矢量以产生缩放的运动矢量,基于第一运动矢量的第一比特深度和第一运动矢量的第一运动矢量精度确定第一有效运动矢量范围,将缩放的运动矢量裁剪到第一有效运动矢量范围以产生第一裁剪的运动矢量,以及使用第一裁剪的运动矢量编码第一视频数据块。
一个或多个示例的细节在附图和以下描述中阐述。其他特征、目的和优点将从说明书、附图和权利要求书中显而易见。
附图说明
图1是示出了可以执行本公开的技术的示例视频编码和解码系统的框图。
图2A和图2B是示出了示例四叉树二叉树(quadtree binary tree,QTBT)结构和对应的编码树单元(CTU)的概念图。
图3是示出了可以执行本公开的技术的示例视频编码器的框图。
图4是示出了可以执行本公开的技术的示例视频解码器的框图。
图5是示出了本公开的示例编码方法的流程图。
具体实施方式
图1是示出了可以执行本公开的技术的示例视频编码和解码系统100的框图。本公开的技术通常针对编码(编码和/或解码)视频数据。通常,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的、未编码的视频、编码的视频、解码的(例如,重构的)视频以及诸如信令数据的视频元数据。
如图1所示,在该示例中,系统100包括源设备102,该源设备102提供将由目标设备116解码和显示的编码视频数据。具体地,源设备102经由计算机可读介质110将视频数据提供给目标设备116。源设备102和目标设备116可以包括大范围的设备中的任何一个,包括台式计算机、笔记本(即便携式)计算机、平板计算机、机顶盒、诸如智能手机的电话手持机、电视、摄像机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备或类似。在一些情况下,源设备102和目标设备116可以装备用于无线通信,因此可以被称为无线通信设备。
在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目标设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开,源设备102的视频编码器200和目标设备116的视频解码器300可以被配置为应用用于存储和修正运动矢量的技术。因此,源设备102表示视频编码设备的示例,而目标设备116表示视频解码设备的示例。在其他示例中,源设备和目标设备可以包括其他组件或布置。例如,源设备102可以从诸如外部摄像机的外部视频源接收视频数据。类似地,目标设备116可以与外部显示设备接口,而不是包括集成显示设备。
如图1所示的系统100仅是一个示例。通常,任何数字视频编码和/或解码设备都可以执行用于存储和修正运动矢量的技术。源设备102和目标设备116仅仅是这样的编码设备的示例,其中,源设备102生成用于到目标设备116的发送的编码视频数据。本公开将“编码”设备称为执行数据编码(编码和/或解码)的设备。因此,视频编码器200和视频解码器300分别表示编码设备的示例,具体地,视频编码器和视频解码器。在一些示例中,设备102、116可以以基本上对称的方式操作,使得设备102、116中的每一个包括视频编码和解码组件。因此,系统100可以支持视频设备102、116之间的单向或双向视频发送,例如用于视频流、视频回放、视频广播或视频电话。
通常,视频源104表示视频数据源(即,原始的、未编码的视频数据),并将连续的一系列的图片(也称为“帧”)提供给视频编码器200,视频编码器200编码用于图片的数据。源设备102的视频源104可以包括视频捕获设备,诸如视频摄像机,包含先前捕获的原始视频的视频档案和/或用于从视频内容提供商接收视频的视频馈送接口。作为另一替代,视频源104可以生成基于计算机图形的数据作为源视频,或者实时视频、存档视频和计算机生成的视频的组合。在每种情况下,视频编码器200对捕获的、预捕获的或计算机生成的视频数据进行编码。视频编码器200可以将图片从接收到的顺序(有时称为“显示顺序”)重新排列成用于编码的编码顺序。视频编码器200可以生成包括编码的视频数据的比特流。然后,源设备102可以经由输出接口108将编码的视频数据输出到计算机可读介质110上,以通过例如目标设备116的输入接口122进行接收和/或检索。
源设备102的存储器106和目标设备116的存储器120表示通用存储器。在一些示例中,存储器106、120可以存储原始视频数据,例如来自视频源104原始视频和来自视频解码器300的原始解码视频数据。另外地或可替换地,存储器106、120可以分别存储可由例如视频编码器200和视频解码器300执行的软件指令。尽管在该示例中与视频编码器200和视频解码器300分开示出,但是应当理解,视频编码器200和视频解码器300还可以包括用于功能相似或等效目的的内部存储器。此外,存储器106、120可以存储编码的视频数据,例如,从视频编码器200输出并输入到视频解码器300。在一些示例中,存储器106、120的部分可以被分配为一个或多个视频缓冲器,例如以存储原始、解码和/或编码的视频数据。
计算机可读介质110可以表示能够将编码的视频数据从源设备102传输到目标设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110表示使源设备102能够例如经由无线电频率网络或基于计算机的网络将编码的视频数据直接实时发送到目标设备116的通信介质。根据诸如无线通信协议的通信标准,输出接口108可以来调制包括编码的视频数据的发送信号,并且输入接口122可以调制所接收的发送信号。通信介质可以包括任何无线或有线通信介质,诸如无线电频率(RF)频谱或一条或多条物理传输线。通信介质可以形成诸如局域网、广域网或诸如因特网的全球网络的基于分组的网络的一部分。通信介质可以包括路由器、交换机、基站或可用于促进从源设备102到目标设备116的通信的任何其他设备。
在一些示例中,源设备102可以将编码数据从输出接口108输出到存储设备112。类似地,目标设备116可以经由输入接口122访问来自存储设备112的编码数据。存储设备112可以包括各种分布式或本地访问的数据存储介质中的任何一种,诸如硬盘驱动器、蓝光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器、或用于存储编码视频数据的任何其他合适的数字存储介质。
在一些示例中,源设备102可以将编码的视频数据输出到文件服务器114或可以存储由源设备102生成的编码的视频的另一中间存储设备。目标设备116可以经由流或下载来访问来自文件服务器114的存储的视频数据。文件服务器114可以是能够存储编码的视频数据并将该编码的视频数据发送到目标设备116的任何类型的服务器设备。文件服务器114可以表示网络服务器(例如,用于网站)、文件传输协议(FTP)服务器、内容递送网络设备或网络附加存储(NAS)设备。目标设备116可以通过包括互联网连接的任何标准数据连接访问来自文件服务器114的编码视频数据。这可以包括适合于访问存储在文件服务器114上的编码视频数据的无线信道(例如Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等)或两者的组合。文件服务器114和输入接口122可以被配置为根据流发送协议、下载发送协议或其组合来操作。
输出接口108和输入接口122可以表示无线发送器/接收器、调制解调器、有线联网组件(例如,以太网卡)、根据各种IEEE 802.11标准中的任何操作的无线通信组件,或其他物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以配置为根据蜂窝通信标准(诸如4G、4G-LTE(长期演进)、LTE高级、5G和类似)来发送数据,诸如编码的视频数据。在输出接口108包括无线发送器的一些示例中,输出接口108和输入接口122可以配置为根据诸如IEEE 802.11规范、IEEE 802.15规范(例如,ZigbeeTM)、BluetoothTM标准或类似其它无线标准来发送数据,诸如编码的视频数据。在一些示例中,源设备102和/或目标设备116可以包括各自的片上系统(SoC)设备。例如,源设备102可以包括SoC设备以执行归因于视频编码器200和/或输出接口108的功能,而目标设备116可以包括SoC设备来执行归因于视频解码器300和/或输入接口122的功能。
本公开的技术可以应用于视频编码以支持各种多媒体应用中的任何一种,诸如空中电视广播、有线电视发送、卫星电视发送、互联网流视频发送,诸如HTTP(DASH)上的动态自适应流、编码到数据存储介质上的数字视频、对存储在数据存储介质上的数字视频进行解码、或其他应用。
目标设备116的输入接口122从计算机可读介质110(例如,存储设备112、文件服务器114,或类似)接收编码的视频比特流。编码的视频比特流计算机可读介质110可以包括由视频编码器200定义的、也由视频解码器300使用的信令信息,诸如具有描述视频块或其他编码单元(例如,切片、图片、图片组、序列或类似)的特征和/或处理的值的语法元素(syntax element)。显示设备118向用户显示解码的视频数据的解码的图片。显示设备118可以代表各种显示设备中的任何一种,诸如阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一类型的显示设备。
尽管未在图1中示出,在一些示例中,视频编码器200和视频解码器300可以各自与音频编码器和/或音频解码器集成,并且可以包括适当的MUX-DEMUX单元或其他硬件和/或软件,以处理包括在公共数据流中的音频和视频两者的多路复用流。如果适用,MUX-DEMUX单元可以符合ITU H.223多路复用器协议或其他协议,诸如用户数据报协议(UDP)。
视频编码器200和视频解码器300中的每一个都可以实现为各种合适的编码器和/或解码器电路中的任何一个,诸如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。当这些技术部分地以软件实现时,设备可以将用于软件的指令存储在合适的、非暂时性的计算机可读介质中,并且使用一个或多个处理器在硬件中执行指令以执行本公开的技术。视频编码器200和视频解码器300中的每一个可以包括在一个或多个编码器或解码器中,这两个编码器或解码器中的任何一个都可以被集成为相应设备中的组合编码器/解码器(CODEC)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或无线通信设备,例如蜂窝电话。
视频编码器200和视频解码器300可以根据视频编码标准(例如ITU-T H.265,也称为高效视频编码(HEVC))或其扩展,诸如多视图和/或可缩放视频编码扩展,来操作。可替换地,视频编码器200和视频解码器300可以根据诸如联合探索测试模型(JEM)或ITU-T H.266(也称为通用(Versatile)视频编码(VVC))的其他专有或工业标准来操作。在Bross等人中描述了VVC标准的最新草案。“通用视频编码(草案5)”,ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11的联合视频专家组(JVET),第14次会议:2019年3月19日至27日,日内瓦,瑞士,JVET-N1001-v2(以下简称“VVC草案5”)。然而,本公开的技术不限于任何特定的编码标准。
通常,视频编码器200和视频解码器300可以执行图片的基于块的编码。术语“块”通常指包括要处理的数据的结构(例如,编码、解码或以其他方式在编码和/或解码过程中使用)。例如,块可以包括亮度和/或色度数据的样本的二维矩阵。通常,视频编码器200和视频解码器300可以对以YUV(例如,Y、Cb、Cr)格式表示的视频数据进行编码。即,视频编码器200和视频解码器300可以对亮度和色度分量进行编码,而不是对用于图片样本的红、绿和蓝(RGB)数据进行编码,其中色度分量可以包括红色色调和蓝色调色度分量。在一些示例中,视频编码器200在编码之前将接收到的RGB格式的数据转换为YUV表示,并且视频解码器300将YUV表示转换为RGB格式。可替换地,预处理和后处理单元(未示出)可以执行这些转换。
本公开一般可以指图片的编码(例如,编码和解码),以包括对图片的数据进行编码或解码的过程。类似地,本公开可以涉及对图片的块进行编码,以包括对块的数据进行编码或解码的过程,例如预测和/或残差(residual)编码。编码的视频比特流通常包括表示编码决定(例如,编码模式)和将图片划分成块的语法元素的一系列值。因此,通常应将对图片或块进行编码的引用理解为形成图片或块的语法元素的编码值。
HEVC定义各种块,包括编码单元(CU)、预测单元(PU)和变换单元(TU)。根据HEVC,视频编码器(例如视频编码器200)根据四叉树结构将编码树单元(CTU)划分为CU。即,视频编码器将CTU和CU划分为四个相等的、不重叠的正方形,并且四叉树的每个节点具有零个或四个子节点。没有子节点的节点可以被称为“叶节点”,并且这样的叶节点的CU可以包括一个或多个PU和/或一个或多个TU。视频编码器可以进一步划分PU和TU。例如,在HEVC中,残差四叉树(RQT)表示TU的分区。在HEVC中,PU表示帧间预测数据,而TU表示残差数据。帧内预测CU包括帧内预测信息,例如帧内模式指示。
作为另一示例,视频编码器200和视频解码器300可以配置为根据JEM或VVC操作。根据JEM或VVC,视频编码器(例如视频编码器200)将图片划分为多个编码树单元(CTU)。视频编码器200可以根据树结构(例如四叉树-二叉树(QTBT)结构或多类型树(MTT)结构)来划分CTU。QTBT结构消除了多分区类型的概念,例如HEVC的CU、PU和TU之间的分隔。QTBT结构包括两个级别:根据四叉树划分的第一级和根据二叉树划分的第二级。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于编码单元(CU)。
在MTT分区结构中,可以使用四叉树(QT)分区、二叉树(BT)分区以及一种或多种类型的三叉树(TT)分区来分区块。三叉树分区是将一个块分割成三个子块的分区。在一些示例中,三叉树分区将块划分为三个子块,而不通过中心划分原始块。MTT中的分区类型(例如,QT、BT和TT)可以是对称或不对称的。
在一些示例中,视频编码器200和视频解码器300可以使用单个QTBT或MTT结构来表示亮度和色度分量中的每一个,而在其他示例中,视频编码器200和视频解码器300可以使用两个或更多个QTBT或MTT结构,诸如用于亮度分量的一个QTBT/MTT结构和用于两个色度分量的另一个QTBT/MTT结构(或者用于各个色度分量的两个QTBT/MTT结构)。
视频编码器200和视频解码器300可以配置为使用每个HEVC的四叉树分区、QTBT分区、MTT分区或其他分区结构。为了解释的目的,相对于QTBT分区给出了本公开的技术的描述。然而,应当理解,本公开的技术也可以应用于配置为使用四叉树分区或其他类型的分区的视频编码器。
本公开可以互换地使用“N×N”和“N乘N”来指代在垂直和水平维度上的块(诸如CU或其他视频块)的样本维度,例如,16×16样本或16乘16样本。通常,16×16CU在垂直方向上具有16个样本(y=16),且在水平方向上具有16个样本(x=16)。同样地,N×N CU通常具有垂直方向上的N个样本和水平方向上的N个样本,其中N表示非负整数值。CU中的样本可以排列成行和列。此外,CU不必在水平方向上具有与在垂直方向上相同数量的样本。例如,CU可以包括N×M个样本,其中M不必等于N。
视频编码器200对表示预测和/或残差信息以及其他信息的CU的视频数据进行编码。预测信息指示如何预测CU以便形成用于CU的预测块。残差信息通常表示编码前的CU的样本和预测块之间的逐个样本的差。
为了预测CU,视频编码器200通常可以通过帧间预测或帧内预测来形成用于CU的预测块。帧间预测通常是指从先前编码的图片的数据来预测CU,而帧内预测通常是指从相同图片的先前编码的数据预测CU。为了执行帧间预测,视频编码器200可以使用一个或多个运动矢量来生成预测块。视频编码器200通常可以执行运动搜索,以识别例如在CU和参考块之间的差方面与CU紧密匹配的参考块。视频编码器200可以使用绝对差之和(SAD)、平方差之和(SSD)、平均绝对差(MAD)、均方差(MSD)或其它此类差值计算来计算差度量(difference metric),以确定参考块是否与当前CU紧密匹配。在一些示例中,视频编码器200可以使用单向预测或双向预测来预测当前CU。
JEM和VVC的一些示例还提供仿射运动补偿模式,其可以被认为是帧间预测模式。在仿射运动补偿模式中,视频编码器200可以确定表示非平移运动的两个或更多个运动矢量,例如放大或缩小、旋转、透视运动或其他不规则运动类型。
为了执行帧内预测,视频编码器200可以选择帧内预测模式来生成预测块。JEM和VVC的一些示例提供六十七种帧内预测模式,包括各种方向模式以及平面模式和DC模式。通常,视频编码器200选择帧内预测模式,该模式描述从其预测当前块的样本的当前块(例如,CU的块)的相邻样本。假设视频编码器200按照光栅扫描顺序(从左到右、从上到下)对CTU和CU进行编码,这样的样本通常可以在与当前块相同的图片中的当前块的上方、上方和左侧或左侧。
视频编码器200对表示当前块的预测模式的数据进行编码。例如,对于帧间预测模式,视频编码器200可以编码表示使用各种可用的帧间预测模式中的哪一个的数据,以及对应模式的运动信息。对于单向或双向帧间预测,例如,视频编码器200可以使用高级运动矢量预测(AMVP)或合并模式来编码运动矢量。视频编码器200可以使用类似的模式来编码用于仿射运动补偿模式的运动矢量。
在诸如块的帧内预测或帧间预测的预测之后,视频编码器200可以计算块的残差数据。残差数据,诸如残差块,表示块与使用对应预测模式形成的块的预测块之间的逐个样本的差。视频编码器200可以将一个或多个变换应用于残差块,以在变换域而非样本域中产生变换的数据。例如,视频编码器200可以将离散余弦变换(DCT)、整数变换、小波变换或概念上类似的变换应用于残差视频数据。另外,视频编码器200可以在第一变换之后应用次级变换,诸如依赖于模式的不可分离的次级变换(MDNSST)、依赖于信号的变换、Karhunen-Loeve变换(KLT)或类似。视频编码器200在应用一个或多个变换之后产生变换系数。
如上所述,在进行任何变换以产生变换系数之后,视频编码器200可以执行变换系数的量化。量化通常是指对变换系数进行量化以可能减少用于表示系数的数据量,从而提供进一步压缩的过程。通过执行量化处理,视频编码器200可以减小与一些或所有系数相关联的比特深度。例如,视频编码器200可以在量化期间将n比特值向下舍入到m比特值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可以执行对要量化的值的逐比特(bitwise)右移。
在量化之后,视频编码器200可以扫描变换系数,从包括量化变换系数的二维矩阵产生一维矢量。扫描可以被设计成将较高的能量(因此较低的频率)系数放置在矢量的前面,并且将较低的能量(因此较高的频率)变换系数放置在矢量的后面。在一些示例中,视频编码器200可以利用预定义的扫描顺序来扫描量化的变换系数以产生串行化的矢量,然后对矢量的量化的变换系数进行熵编码。在其他示例中,视频编码器200可以执行自适应扫描。在扫描量化的变换系数以形成一维矢量之后,视频编码器200可以例如根据上下文自适应二进制算术编码(CABAC)对一维矢量进行熵编码。视频编码器200还可以对描述与编码的视频数据相关联的元数据的语法元素的值进行熵编码,以供视频解码器300在解码视频数据时使用。
为了执行CABAC,视频编码器200可以将上下文模型内的上下文分配给要发送的符号。上下文可以涉及例如符号的相邻值是否为零值。概率确定可以基于分配给符号的上下文。
视频编码器200还可以向视频解码器300生成语法数据,诸如基于块的语法数据、基于图片的语法数据和基于序列的语法数据,例如,在图片头、块头、切片头或其他语法数据,诸如序列参数集(SPS)、图片参数集(PPS)或视频参数集(VPS)。视频解码器300同样可以对这样的语法数据进行解码,以确定如何解码对应的视频数据。
以此方式,视频编码器200可以生成包括编码的视频数据的比特流,例如,描述将图片划分成块(例如,CU)的语法元素以及用于块的预测和/或残差信息。最终,视频解码器300可以接收比特流并且解码编码的视频数据。
通常,视频解码器300执行与视频编码器200执行的处理相反的进程,以解码比特流的编码视频数据。例如,视频解码器300可以使用CABAC以与视频编码器200的CABAC编码过程基本相似的方式来解码比特流的语法元素的值,尽管与之相反。语法元素可以定义图片的划分信息为CTU,并根据诸如QTBT结构的对应的划分结构)对每个CTU进行划分,以定义CTU的CU。语法元素可以进一步定义视频数据块(例如,CU)的预测和残差信息。
例如,残差信息可以由量化的变换系数来表示。视频解码器300可以对块的量化变换系数进行逆量化和逆变换,以再现该块的残差块。视频解码器300使用发送信号的预测模式(帧内或帧间预测)和相关的预测信息(例如,用于帧间预测的运动信息)来形成用于块的预测块。视频解码器300然后可以组合预测块和残差块(在逐个样本的基础上)以再现原始块。视频解码器300可以执行附加处理,诸如执行去块(deblock)处理以减少沿块的边界的视觉伪影。
根据本公开的技术,如下面将更详细解释的,视频编码器200和视频解码器300可以配置为以各种运动矢量精度和运动矢量比特深度来存储运动矢量。在一些示例中,视频编码器200和视频解码器300可以配置为基于运动矢量精度来确定运动矢量比特深度。视频编码器200和视频解码器300还可以配置为基于运动矢量精度和运动矢量比特深度来确定运动矢量的码字的有效范围。基于该有效范围,视频编码器200和视频解码器300可以配置为在执行某些操作时修正运动矢量,诸如运动矢量缩放和/或运动矢量细化过程。
在本公开的一个示例中,视频编码器200和视频解码器300可以配置为确定第一视频数据块的第一运动矢量,缩放第一运动矢量以产生经缩放的运动矢量,基于第一运动矢量的第一比特深度和第一运动矢量的第一运动矢量精度来确定第一有效运动矢量范围,将缩放的运动矢量裁剪到第一有效运动矢量范围以产生第一裁剪的运动矢量,以及使用第一裁剪的运动矢量解码第一视频数据块。
本公开一般可以指“通过信令发送(signaling)”特定信息,诸如语法元素。术语“通过信令发送”通常可以指用于解码编码的视频数据的值、语法元素和/或其它数据的通信。即,视频编码器200可以发信号通知比特流中的语法元素的值。通常,通过信令发送指的是在比特流中生成值。如上所述,源设备102可以基本上实时地或非实时地将比特流传输到目标设备116,诸如在将语法元素存储到存储设备112时可能发生,以供由目标设备116稍后检索。
图2A和2B是示出了示例四叉树二叉树(QTBT)结构130和对应的编码树单元(CTU)132的概念图。实线表示四叉树分割,而虚线表示二叉树分割。在二叉树的每个分割(即,非叶)节点中,用信号通知一个标志以指示使用哪种分割类型(即,水平或垂直),其中在该示例中,0表示水平分割,而1表示垂直分割。对于四叉树分割,不需要指明分割类型,因为四叉树节点将块水平和垂直地分割成尺寸相等的4个子块。因此,视频编码器200可以编码,而视频解码器300可以解码,用于QTBT结构130的区域树级别(即,实线)的语法元素(例如,分割信息)和用于QTBT结构130的预测树级别(即,虚线)的语法元素(例如,分割信息)。视频编码器200可以编码,而视频解码器300可以解码,诸如用于由QTBT结构130的末端叶节点表示的CU的预测和变换数据的视频数据。
通常,图2B的CTU 132可以与定义与第一和第二级别的QTBT结构130的节点相对应的块尺寸的参数相关联。这些参数可以包括CTU尺寸(表示样本中CTU 132的尺寸)、最小四叉树尺寸(MinQTSize,表示最小允许的四叉树叶节点尺寸)、最大二叉树尺寸(MaxBTSize,表示最大允许的二叉树根节点尺寸)、最大二叉树深度(MaxBTDepth,表示最大允许的二叉树深度)和最小二叉树尺寸(MinBTSize,表示最小允许的二叉树叶节点尺寸)。
与CTU相对应的QTBT结构的根节点可以在QTBT结构的第一级具有四个子节点,每个子节点可以根据四叉树划分来划分。即,第一级的节点是叶节点(没有子节点),或具有四个子节点。QTBT结构130的示例将这样的节点表示为包括具有用于分支的实线的父节点和子节点。如果第一级的节点不大于最大允许的二叉树根节点尺寸(MaxBTSize),则可以通过相应的二叉树进一步对其划分。可以迭代一个节点的二叉树拆分,直到拆分产生的节点达到最小允许的二叉树叶节点尺寸(MinBTSize)或最大允许的二叉树深度(MaxBTDepth)。QTBT结构130的示例将这样的节点表示为具有用于分支的虚线。二叉树叶节点被称为编码单元(CU),其用于预测(例如,图片内或图片间预测)和变换,而无需任何进一步的划分。如上所述,CU也可以被称为“视频块”或“块”。
在QTBT分区结构的一个示例中,将CTU尺寸设置为128×128(亮度样本和两个对应的64×64色度样本),将MinQTSize设置为16×16,将MaxBTSize设置为64×64,将MinBTSize(针对宽度和高度)设置为4,以及将MaxBTDepth设置为4。首先将四叉树划分应用于CTU以生成四叉树叶节点。四树叶节点可以具有从16×16(即,MinQTSize)到128×128(即,CTU尺寸)的尺寸。如果叶四叉树节点是128×128,则它不会被二叉树进一步拆分,因为其尺寸超过MaxBTSize(即,在本例中为64×64)。否则,叶四叉树节点将被二叉树进一步划分。因此,四叉树叶节点也是二叉树的根节点,并且二叉树深度为0。当二叉树深度达到MaxBTDepth(在本例中为4)时,不允许进一步拆分。当二叉树节点的宽度等于MinBTSize(在本例中为4)时,这意味着不允许进一步的水平拆分。类似地,高度等于MinBTSize的二叉树节点意味着对于该二叉树节点不允许进一步的垂直拆分。如上所述,二叉树的叶节点被称为CU,并且根据预测和变换进一步处理,而无需进一步划分。
图3是示出了可以执行本公开的技术的示例视频编码器200的框图。图3是为了解释的目的而提供的,并且不应被认为是本公开中广泛例示和描述的技术的限制。为了解释的目的,本公开在诸如正在开发的HEVC视频编码标准和H.266(VVC)视频编码标准的视频编码标准的上下文中描述了视频编码器200。但是,本公开的技术并不局限于这些视频编码标准,并且通常适用于视频编码和解码。
在图3的示例中,视频编码器200包括视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元(quantization)210、逆变换处理单元212、重构单元214、滤波单元216、解码图片缓冲器(DPB)218和熵编码单元220。视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重构单元214、滤波单元216、DPB 218和熵编码单元220中的任何或全部可以在一个或多个处理器中或在处理电路中实现。此外,视频编码器200可以包括附加的或可替换的处理器或处理电路,以执行这些和其他功能。
视频数据存储器230可以存储将由视频编码器200的组件编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。DPB218可以用作参考图片存储器,其存储用于由视频编码器200预测后续视频数据的参考视频数据。视频数据存储器230和DPB218可以由各种存储设备中的任何一种形成,例如动态随机存取存储器(DRAM),包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、电阻RAM(RRAM)或其他类型的存储设备。视频数据存储器230和DPB 218可以由相同的存储设备或分开的存储设备提供。在各种示例中,如图所示,视频数据存储器230可以与视频编码器200的其他组件在芯片上,或者相对于那些组件在芯片外。
在本公开中,对视频数据存储器230的引用不应被解释为仅限于视频编码器200内部的存储器,除非具体描述如此,或视频编码器200外部的存储器,除非具体描述如此。相反,对视频数据存储器230的引用应理解为存储视频编码器200接收用于编码的视频数据(例如,用于要编码的当前块的视频数据)的参考存储器。图1的存储器106还可以提供来自视频编码器200的各个单元的输出的临时存储。
图3的各个单元被示出以帮助理解由视频编码器200执行的操作。这些单元可以实现为固定功能电路、可编程电路或其组合。固定功能电路是指提供特定功能并预置在可以执行的操作上的电路。可编程电路是指可以编程以执行各种任务并在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行使可编程电路以软件或固件的指令定义的方式操作的软件或固件。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作类型通常是不变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,一个或多个单元可以是集成电路。
视频编码器200可以包括由可编程电路形成的算术逻辑单元(ALU)、基本功能单元(EFU)、数字电路、模拟电路和/或可编程核心。在使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收和执行的软件的结果代码,或者视频编码器200(未示出)内的另一存储器可以存储这样的指令。
视频数据存储器230配置为存储接收的视频数据。视频编码器200可以从视频数据存储器230检索视频数据的图片,并将视频数据提供给残差生成单元204和模式选择单元202。视频数据存储器230中的视频数据可以是要被编码的原始视频数据。
模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括附加功能单元,以根据其他预测模式执行视频预测。作为示例,模式选择单元202可以包括调色板单元、块内复制单元(其可以是运动估计单元222和/或运动补偿单元224的一部分)、仿射单元、线性模型(LM)单元,或类似。
模式选择单元202通常协调多个编码遍,以测试编码参数的组合和这些组合的所得率失真值。编码参数可以包括将CTU划分为CU、用于CU的预测模式、用于CU的残差数据的变换类型、用于CU的残差数据的量化参数等。模式选择单元202可以最终选择具有比其他测试的组合更好的率(rate)失真值的编码参数的组合。
视频编码器200可以将从视频数据存储器230检索的图片划分为一系列CTU,并将一个或多个CTU封装在切片内。模式选择单元202可以根据树结构,诸如上述HEVC的QTBT结构或四叉树结构,来划分图片的CTU。如上所述,视频编码器200可以根据树结构通过划分CTU来形成一个或多个CU。这样的CU也通常可以称为“视频块”或“块”。
通常,模式选择单元202还控制其组件(例如,运动估计单元222、运动补偿单元224和帧内预测单元226)以生成针对当前块(例如,当前CU,或者在HEVC中,PU和TU的重叠部分)的预测块。对于当前块的帧间预测,运动估计单元222可以执行运动搜索,以识别一个或多个参考图片(例如,存储在DPB 218中的一个或多个先前编码的图片)中的一个或多个紧密匹配的参考块。具体地,运动估计单元222可以例如根据绝对差之和(SAD)、平方差之和(SSD)、平均绝对差(MAD)、均方差(MSD)或类似来计算表示潜在参考块与当前块有多相似的值。运动估计单元222通常可以使用当前块和正在考虑的参考块之间的逐个样本的差来执行这些计算。运动估计单元222可以识别具有从这些计算得到的最低值的参考块,指示与当前块最紧密匹配的参考块。
运动估计单元222可以形成一个或多个运动矢量(MV),其定义在参考图片中参考块的位置相对于在当前图片中当前块的位置。然后,运动估计单元222可以将运动矢量提供给运动补偿单元224。例如,对于单向帧间预测,运动估计单元222可以提供单个运动矢量,而对于双向帧间预测,运动估计单元222可以提供两个运动矢量。然后,运动补偿单元224可以使用运动矢量生成预测块。例如,运动补偿单元224可以使用运动矢量检索参考块的数据。作为另一示例,如果运动矢量具有分数采样精度,则运动补偿单元224可以根据一个或多个插值滤波器插值预测块的值。此外,对于双向帧间预测,运动补偿单元224可以检索用于由相应运动矢量识别的两个参考块的数据,并且例如通过逐个样本平均或加权平均来组合检索到的数据。
在本公开的一个示例中,运动估计单元222、运动补偿单元224或视频编码器200的另一结构可以配置为执行用于存储和修正运动矢量的本公开的技术。在本公开的一个示例中,运动估计单元222可以配置为确定第一视频数据块的第一运动矢量。在一些示例中,例如,当使用仿射模式运动补偿执行帧间预测时或当使用时间运动矢量预测器时,运动补偿单元224可以配置为缩放第一运动矢量以产生缩放的运动矢量。根据将在下面更详细描述的本公开的技术,运动补偿单元224还可以配置为将缩放的运动矢量裁剪到第一有效运动矢量范围以产生第一裁剪的运动矢量,其中第一有效运动矢量范围基于第一运动矢量的第一比特深度和第一运动矢量的第一运动矢量精度。运动补偿单元224还可以配置为使用第一裁剪的运动矢量来编码第一视频数据块。
作为另一示例,对于帧内预测或帧内预测编码,帧内预测单元226可以从与当前块相邻的样本中生成预测块。例如,对于定向模式,帧内预测单元226通常可以数学地组合相邻样本的值,并且在当前块上沿定义的方向填充这些计算的值以产生预测块。作为另一示例,对于DC模式,帧内预测单元226可以计算与当前块相邻的样本的平均值,并且生成预测块以包括针对预测块的每个样本的该产生的平均值。
模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的未编码的原始版本,并从模式选择单元202接收预测块。残差生成单元204计算当前块和预测块之间的逐个样本差。产生的逐个样本的差定义了当前块的残差块。在一些示例中,残差生成单元204还可以确定残差块中的样本值之间的差,以使用残差差分脉冲编码调制(RDPCM)生成残差块。在一些示例中,可以使用执行二进制减法的一个或多个减法器电路来形成残差生成单元204。
在模式选择单元202将CU划分为PU的示例中,每个PU可以与亮度预测单元和对应的色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种尺寸的PU。如上所述,CU的尺寸可以是指CU的亮度编码块的尺寸,而PU的尺寸可以是指PU的亮度预测单元的尺寸。假设特定CU的尺寸是2N×2N,则视频编码器200可以支持用于帧内预测的2N×2N或N×N的PU尺寸,以及用于帧间预测的2N×2N、2N×N、N×2N、N×N或类似的对称PU尺寸。视频编码器200和视频解码器300还可以支持用于帧间预测的2N×nU、2N×nD、nL×2N和nR×2N的PU尺寸的非对称分区。
在模式选择单元不进一步将CU划分为PU的示例中,每个CU可以与亮度编码块和对应的色度编码块相关联。如上所述,CU的尺寸可以指CU的亮度编码块的尺寸。视频编码器200和视频解码器120可以支持2N×2N、2N×N或N×2N的CU尺寸。
对于其他视频编码技术,例如块内复制模式编码、仿射模式编码和线性模型(LM)模式编码,仅举几个例子,模式选择单元202经由与编码技术相关联的各个单元生成用于正被编码的当前块的预测块。在一些示例中,诸如调色板模式编码,模式选择单元202可以不生成预测块,而是生成指示基于所选调色板来重构块的方式的语法元素。在这些模式中,模式选择单元202可以将这些语法元素提供给熵编码单元220以进行编码。
如上所述,残差生成单元204接收当前块和对应的预测块的视频数据。然后,残差生成单元204生成当前块的残差块。为了生成残差块,残差生成单元204计算预测块和当前块之间的逐个样本的差。
变换处理单元206将一个或多个变换应用于残差块以生成变换系数块(在此被称为“变换系数块”)。变换处理单元206可以将各种变换应用于残差块以形成变换系数块。例如,变换处理单元206可以将离散余弦变换(DCT)、定向变换、Karhunen-Loeve变换(KLT)或概念上相似的变换应用于残差块。在一些示例中,变换处理单元206可以对残差块执行多个变换,例如,主变换和次变换,诸如旋转变换。在一些示例中,变换处理单元206不将变换应用于残差块。
量化单元208可以量化变换系数块中的变换系数,以产生量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(QP)值来量化变换系数块的变换系数。视频编码器200(例如,经由模式选择单元202)可以通过调整与CU相关联的QP值来调整应用于与当前块相关联的系数块的量化程度。量化可能引入信息损失,并且因此量化的变换系数可能具有比由变换处理单元206产生的原始变换系数更低的精度。
逆量化单元210和逆变换处理单元212可以分别对量化的变换系数块应用逆量化和逆变换,以从变换系数块重构残差块。重构单元214可以基于重构的残差块和由模式选择单元202生成的预测块来产生与当前块相对应的重构块(尽管可能具有某种程度的失真)。例如,重构单元214可以将重构的残差块的样本添加到来自由模式选择单元202生成的预测块的对应的样本,以产生重构的块。
过滤单元216可以对重构的块执行一个或多个过滤操作。例如,滤波单元216可以执行去块操作以减少沿着CU边缘的块状伪影。在一些示例中,可以跳过过滤单元216的操作。
视频编码器200将重构的块存储在DPB 218中。例如,在不需要滤波单元216的操作的示例中,重构单元214可以将重构的块存储到DPB 218。在需要过滤单元216的操作的示例中,过滤单元216可以将过滤后的重构块存储到DPB 218。运动估计单元222和运动补偿单元224可以从由重构的(并且可能滤波的)块形成的DPB 218检索参考图片,以帧间预测随后编码的图片的块。此外,帧内预测单元226可以使用当前图片的DPB 218中的重构的块来对当前图片中的其他块进行帧内预测。
通常,熵编码单元220可以对从视频编码器200的其他功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的量化变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对作为视频数据的另一示例的语法元素执行一个或多个熵编码操作,以生成熵编码的数据。例如,熵编码单元220可以对数据执行上下文自适应可变长度编码(CAVLC)操作、CABAC操作、可变到可变(V2V)长度编码操作、基于语法的上下文自适应二进制算术编码(SBAC)操作、概率区间划分熵(PIPE)编码操作、指数Golomb编码操作或另一类型的熵编码操作。在一些示例中,熵编码单元220可以在语法元素未被熵编码的旁通模式下操作。
视频编码器200可以输出包括重构切片或图片的块所需的熵编码的语法元素的比特流。具体地,熵编码单元220可以输出比特流。
关于块描述了上述操作。这样的描述应该理解为用于亮度编码块和/或色度编码块的操作。如上所述,在一些示例中,亮度编码块和色度编码块是CU的亮度和色度分量。在一些示例中,亮度编码块和色度编码块是PU的亮度和色度分量。
在一些示例中,不需要针对色度编码块重复针对亮度编码块执行的操作。作为一个示例,识别用于亮度编码块的运动矢量(MV)和参考图片的操作不需要重复用于识别色度块的MV和参考图片。相反,可以缩放用于亮度编码块的MV以确定用于色度块的MV,并且参考图片可以是相同的。作为另一示例,对于亮度编码块和色度编码块,帧内预测处理可以是相同的。
视频编码器200表示配置为编码视频数据的设备的示例,该设备包括配置为存储视频数据的存储器,以及一个或多个处理单元在电路中实现并配置为确定用于第一视频数据块的第一运动矢量、缩放第一运动矢量以产生缩放的运动矢量、基于第一运动矢量的第一比特深度和第一运动矢量的第一运动矢量精度来确定第一有效运动矢量范围、将缩放的运动矢量裁剪到第一有效运动矢量范围以产生第一裁剪的运动矢量,以及使用第一裁剪的运动矢量来编码第一视频数据块。
图4是示出了可以执行本公开的技术的示例视频解码器300的框图。图4是为了解释的目的而提供的,并且不限于本公开中广泛例示和描述的技术。为了解释的目的,本公开描述了根据JEM、VVC和HEVC技术描述的视频解码器300。然而,本公开的技术可以由配置为其他视频编码标准的视频编码设备来执行。
在图4的示例中,视频解码器300包括编码图片缓冲器(CPB)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波单元312和解码图片缓冲器(DPB)314。CPB存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波单元312和DPB 314中的任何或全部可以在一个或多个处理器中或在处理电路中实现。此外,视频解码器300可以包括附加的或可替换的处理器或处理电路,以执行这些和其他功能。
预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括加法单元,以根据其他预测模式执行预测。作为示例,预测处理单元304可以包括调色板单元、块内复制单元(其可以形成运动补偿单元316的一部分)、仿射单元、线性模型(LM)单元,或类似。在其他示例中,视频解码器300可以包括更多、更少或不同的功能组件。
CPB存储器320可以存储要由视频解码器300的组件解码的视频数据,诸如编码的视频比特流。存储在CPB存储器320中的视频数据可以例如从计算机可读介质110(图1)获得。CPB存储器320可以包括存储来自编码视频比特流的编码视频数据(例如,语法元素)的CPB。此外,CPB存储器320可以存储除了编码图片的语法元素之外的视频数据,诸如表示来自视频解码器300的各个单元的输出的临时数据。DPB 314通常存储解码的图片,当解码编码的视频比特流的后续数据或图片时,视频解码器300可以输出该解码的图片和/或将其用作参考视频数据。CPB存储器320和DPB 314可以由各种存储设备中的任何一种形成,诸如动态随机存取存储器(DRAM),包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、电阻性RAM(RRAM)或其他类型的存储设备。CPB存储器320和DPB 314可以由相同的存储设备或分开的存储设备提供。在各种示例中,CPB存储器320可以与视频解码器300的其他组件在芯片上,或者相对于那些组件在芯片外。
另外地或可替换地,在一些示例中,视频解码器300可以从存储器120(图1)检索编码的视频数据。即,存储器120可以如上所述与CPB存储器320一起存储数据。类似地,当视频解码器300的一些或全部功能在软件中实现以由视频解码器300的处理电路执行时,存储器120可以存储将由视频解码器300执行的指令。
图4中所示的各种单元被图示以帮助理解由视频解码器300执行的操作。这些单元可以实现为固定功能电路、可编程电路或其组合。与图3类似,固定功能电路指的是提供特定功能并且预先设置在可以执行的操作上的电路。可编程电路是指可以编程以执行各种任务并在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行使可编程电路以软件或固件的指令定义的方式操作的软件或固件。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作类型通常是不变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,一个或多个单元可以是集成电路。
视频解码器300可以包括ALU、EFU、数字电路、模拟电路和/或由可编程电路形成的可编程核心。在视频解码器300的操作由在可编程电路上执行的软件执行的示例中,片上或片外存储器可以存储视频解码器300接收和执行的软件的指令(例如,结果代码)。
熵解码单元302可以从CPB接收编码的视频数据,并且对视频数据进行熵解码以再现语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310和滤波单元312可以基于从比特流提取的语法元素来生成解码的视频数据。
通常,视频解码器300在逐块的基础上重构图片。视频解码器300可以单独地对每个块执行重构操作(其中,当前正在被重构(即,被解码)的块可以被称为“当前块”)。
熵解码单元302可对定义量化的变换系数块的量化的变换系数的语法元素以及诸如量化参数(QP)和/或变换模式指示的变换信息进行熵解码。逆量化单元306可以使用与量化的变换系数块相关联的QP来确定量化程度,并且同样地,确定逆量化程度以供逆量化单元306应用。例如,逆量化单元306可以执行逐比特左移操作,以对量化的变换系数进行逆量化。逆量化单元306可以由此形成包括变换系数的变换系数块。
在逆量化单元306形成变换系数块之后,逆变换处理单元308可以对变换系数块应用一个或多个逆变换,以生成与当前块相关联的残差块。例如,逆变换处理单元308可以将逆DCT、逆整数变换、逆Karhunen-Loeve变换(KLT)、逆旋转变换、逆方向变换或另一逆变换应用于系数块。
此外,预测处理单元304根据由熵解码单元302熵解码的预测信息语法元素生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示DPB 314中要从其检索参考块的参考图片,以及识别参考图片中参考块的位置相对于当前图片中当前块的位置的运动矢量。运动补偿单元316通常可以以与关于运动补偿单元224(图3)描述的基本相似的方式来执行帧间预测处理。
在本公开的一个示例中,运动补偿单元316或视频解码器300的另一结构可以配置为执行用于存储和修正运动矢量的本公开的技术。在本公开的一个示例中,运动补偿单元316可以配置为确定第一视频数据块的第一运动矢量。在一些示例中,例如,当使用仿射模式运动补偿执行帧间预测时或当使用时间运动矢量预测器时,运动补偿单元316可以配置为缩放第一运动矢量以产生缩放的运动矢量。根据将在下面更详细描述的本公开的技术,运动补偿单元316还可以配置为将缩放的运动矢量裁剪到第一有效运动矢量范围以产生第一裁剪的运动矢量,其中第一有效运动矢量范围是基于第一运动矢量的第一比特深度和第一运动矢量的第一运动矢量精度。运动补偿单元316还可以配置为使用第一裁剪的运动矢量来解码第一视频数据块。
作为另一示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。再次,帧内预测单元318通常可以以与关于帧内预测单元226(图3)描述的基本上类似的方式执行帧内预测处理。帧内预测单元318可以从DPB 314检索与当前块相邻的样本的数据。
重构单元310可以使用预测块和残差块重构当前块。例如,重构单元310可以将残差块的样本添加到预测块的对应样本以重构当前块。
滤波单元312可以对重构的块执行一个或多个过滤操作。例如,滤波单元312可以执行去块操作,以减少沿重构块的边缘的块性伪影。不一定在所有示例中都执行滤波单元312的操作。
视频解码器300可以将重构的块存储在DPB 314中。如上所述,DPB 314可以将参考消息,诸如用于帧内预测的当前图片的样本和用于后续运动补偿的先前解码的图片的样本,提供给预测处理单元304。此外,视频解码器300可以输出来自DPB的解码图片,用于随后在诸如图1的显示设备118的显示设备上呈现。
以此方式,视频解码器300表示视频解码设备的示例,该视频解码设备包括配置为存储视频数据的存储器,以及一个或多个处理单元在电路中实现并配置为确定第一视频数据块的第一运动矢量,缩放第一运动矢量以产生缩放的运动矢量,基于第一运动矢量的第一比特深度和第一运动矢量的第一运动矢量精度确定第一有效运动矢量范围,将缩放的运动矢量裁剪到第一有效运动矢量范围以产生第一裁剪的运动矢量,以及使用第一裁剪的运动矢量解码第一视频数据块。
如上所述,一些现代视频编解码器,诸如HEVC,通常使用几种帧间预测模式,诸如AMVP、跳过和合并模式。配置为根据HEVC操作的视频编码器以1/4像素精度导出和/或发出用于这种帧间预测模式的信号运动矢量。除了HEVC之外的视频编解码器(例如VVC)也可以使用多个帧间预测模式。然而,并不是所有的帧间预测模式都以1/4像素精度或仅使用一个特定的运动矢量精度来操作。一个例子是使用自适应运动分辨率的帧间预测模式,其可以使用多个不同精度的运动矢量并发出信号。例如,运动矢量精度可以是1/4像素、1/8像素、1像素甚至4像素的任意组合。通常,高精度运动矢量提供更精确的运动表示。然后,越精确的运动表示通常会导致较低的预测误差。
在其他示例中,视频编解码器可以配置为以一个运动矢量精度(例如1/4像素)发信号和/或导出运动矢量(和/或运动矢量差)。在同一视频编解码器中,仅从编码信息导出运动矢量(例如,不用在编码视频比特流中发送信号运动矢量)的其它帧间预测模式可以使用另一精度,例如1/16像素。这实现了更高的运动矢量精度,而不会产生信令成本。另外或可替换地,可能存在一些帧间预测模式,其中视频编码器以一种精度发送信号表示运动矢量,然后利用该表示运动矢量来导出其他精度的运动矢量,诸如在JEM中的仿射模式的一个示例中。
从上述各种帧间预测模式和运动矢量精度示例可以看出,运动矢量存储技术可能需要处理不同的运动矢量精度。运动矢量存储技术的一些示例包括:
1.以一个精度存储所有运动矢量。精度高于存储精度的运动矢量可以被舍入或截断。精度高于存储精度的运动矢量可以被缩放。
2.以多种精度存储运动矢量。每个运动矢量都存储有一个标志,以指示精度。
3.以一个精度存储一个块的运动矢量。每个块都有一个标志以指示精度。两个或更多个精度用于多个块。
在一些示例中,每个运动矢量在存储器中具有固定尺寸的存储。例如,在HEVC中,使用16比特来存储运动矢量的每个分量(例如,x方向分量和y方向分量)。该限制意味着运动矢量分量的值不能超出[-8192到8191+3/4]的范围(例如,当使用1/4像素精度时)。随着运动矢量精度的不同,运动矢量的有效范围会随着精度的变化而变化。例如,考虑运动矢量的每个分量的16比特存储。如果运动精度更改为1/16像素,则与1/4像素精度相比,有效范围将更改为[-2048,2047+15/16]。
鉴于使用多个运动矢量精度的这一特征,本公开描述了用于确定渐进(或自适应)运动矢量范围的技术。本公开的示例包括视频编解码器(例如,实现这样的编解码器的视频编码器200和视频解码器300)中的系统和方法,以当多个运动矢量精度共存于编解码器中时存储运动矢量。
一般而言,本公开描述了用于帧间预测中使用的运动矢量的存储和修正的技术。具体地,本公开描述了用于存储、处理和修正运动矢量的技术,其可以以多种不同运动矢量精度(例如,4像素、1像素、1/4像素、1/16像素等)发送信号和/或导出,并且可以存储在一个或多个运动矢量比特深度中(例如,16比特、18比特、24比特等)。本公开的技术可以允许视频编码器(例如,视频编码器200和视频解码器300)保持所谓的高精度运动矢量(例如,以相对较高的运动矢量精度发送信号和/或导出的运动矢量)的高精度,即使运动矢量的分量(例如,x和y分量)的可能值的有效范围随着运动矢量精度和运动矢量比特深度的变化而变化。
在一些示例中,视频编码器200和视频解码器300可以配置为基于运动矢量的运动矢量精度和运动矢量的分量将被存储在存储器中的运动矢量比特深度中的一个或多个来修正和/或裁剪的运动矢量的分量的值。即,运动矢量精度和运动矢量比特深度可以定义运动矢量的分量在给定运动矢量精度和/或运动矢量比特深度的下可能具有的码字值的有效范围。在一些示例中,视频编码器200和视频解码器300可以将进程应用于运动矢量,其可以导致运动矢量的分量的值超出这样的有效范围。这样的进程的示例可以包括运动矢量缩放(例如,当使用时间运动矢量候选或仿射模式时)或运动矢量细化(例如,当执行双向匹配过程时)。当视频编码器200和/或视频解码器300确定修正的运动矢量的分量值超出该运动矢量的有效范围时,视频编码器200和/或视频解码器300可以配置为裁剪分量的值。
为了说明一些示例,下面的讨论说明了使用两种不同的运动矢量精度:1/4像素运动矢量精度(在我们的例子中称为低精度运动矢量)和1/16像素运动矢量精度(在我们的例子中称为高精度MV)。然而,本公开的技术不限于这两个运动矢量精度,而是本公开的技术可以应用于任何数量的运动矢量精度。即,本公开的技术并不具体地限于单个低和高运动矢量精度,诸如1/4和1/16。这些精度仅作为示例在下面的示例中说明。
此外,应该注意,关于使用16比特来存储运动矢量分量,下面讨论了各种示例。然而,本公开的技术可以与其他运动矢量比特深度一起使用,包括18、24、32或任何其他合适数量的比特,以存储运动矢量分量。
示例运动矢量存储技术1
在本公开的一个示例中,视频编码器200和视频解码器300(例如,运动估计单元和运动补偿单元316)可以配置为基于指定的运动矢量精度来确定运动矢量的比特深度以存储运动矢量。运动矢量精度可以由编码的视频比特流中用发送信号的语法元素来指定,和/或运动矢量精度可以由视频解码器300隐式地从视频编码特性确定。
在一个示例中,指定的运动矢量精度是高精度运动矢量精度(例如,1/16像素MV精度),并且具有相关的有效运动矢量范围。在该示例中,运动矢量比特深度可以是固定数字(例如,18比特),但是运动矢量精度可以基于由一个或多个参数集中的语法元素定义的发送信号参数(例如,由视频编码器200编码的参数和/或由视频解码器300解码的参数)逐帧或逐个区域地改变。例如,如果一个示例是提供在[-8192.00,8191.75]整数像素范围内的运动矢量(例如,运动矢量的x或y分量)的有效范围,则视频编码器200和视频解码器300可以配置为使用18比特来存储高精度运动矢量的每个分量。
同时,相同的运动矢量比特深度(例如,18比特)也用于存储任何低精度运动矢量的每个分量。在该方案下,视频数据块的任何运动矢量导出或信令都将受到范围限制。如果运动矢量超出范围,则视频编码器200和视频解码器300可以配置为在存储运动矢量之前或者甚至在将运动矢量用于其他模块(例如,运动补偿或导出其他运动信息)之前对运动矢量执行进一步的修正。下面说明了对其他示例的一些修正。这些进一步的修正可以单独使用,或与在此的其他示例适当组合使用。
在一些示例中,视频编码器200和视频解码器300可以对运动矢量执行缩放处理(例如,运动矢量缩放)。例如,视频编码器200和视频解码器300可以在执行时间运动矢量预测(例如,HEVC中的时间运动矢量消失)时,基于时间参考图片的图片顺序计数(POC)值来执行运动矢量缩放。当执行运动矢量缩放时,视频编码器200和视频解码器300可以配置为修正(例如,裁剪)缩放的运动矢量以落入有效运动矢量范围内。视频编码器200和视频解码器300可以配置为将有效(例如,裁剪)范围确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是运动矢量比特深度,并且运动矢量P是用于表示运动矢量精度的比特(例如,对于1/16像素MV精度,P=4)。
在本公开的一个示例中,视频编码器200和视频解码器300可以配置为确定第一视频数据块的第一运动矢量。在该示例中,视频编码器200和视频解码器300可以配置为使用第一运动和帧间预测模式来编码或解码第一视频数据块。帧间预测模式可以是跳过模式、合并模式、AMVP模式、仿射模式或使用运动矢量的任何其他帧间预测模式之一。
在一些示例中,视频编码器200和视频解码器300可以配置为缩放第一运动矢量以产生缩放的运动矢量。在一些示例中,缩放可以用于时间运动矢量候选和/或用于仿射运动矢量。根据本公开的技术,视频编码器200和视频解码器300可以配置为将缩放的运动矢量裁剪到第一有效运动矢量范围以产生第一裁剪的运动矢量,其中第一有效运动矢量范围基于第一运动矢量的第一比特深度和第一运动矢量的第一运动矢量精度。在一个示例中,第一有效运动矢量范围被定义为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是第一运动矢量的第一比特深度,P表示第一运动矢量的第一运动矢量精度。然后,视频编码器200和视频解码器300可以配置为使用第一裁剪的运动矢量来编码或解码第一视频数据块。
在本发明的另一示例中,视频编码器200和视频解码器300可以配置为确定第一运动矢量的第一运动矢量精度,并且基于第一运动矢量精度来确定第一运动矢量的第一比特深度。在一个示例中,第一运动矢量的第一比特深度是18比特,并且第一运动矢量的第一运动矢量精度是1/16像素运动矢量精度。然后,视频编码器200和视频解码器300可以配置为在存储器(例如,视频数据存储器230、解码图片缓冲器218、CPB存储器320、DPB314或视频编码器200或视频解码器300可用的任何其他存储器)中以确定的第一比特深度存储第一运动矢量。
当执行运动矢量缩放(例如,用于HEVC中的时间运动矢量预测的缩放)时,如果缩放的运动矢量不落入有效运动矢量范围内,则缩放的运动矢量可能是无效的。如上所述,视频编码器200和视频解码器300可以配置为将有效运动矢量范围确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是运动矢量比特深度,P是表示分数运动矢量的比特(例如,对于1/16像素运动矢量精度,P=4)。无效的缩放可能会导致不可用的运动矢量预测或合并候选。在另一示例中,无效缩放可能导致没有运动矢量缩放,因此缩放之前和之后的运动矢量是相同的(即,缩放因子等于1)。
在本公开的另一示例中,当执行运动矢量细化(例如,在双向匹配模式中使用的运动矢量细化,诸如在JEM中)时,视频编码器200和视频解码器300可以配置为修正(例如,裁剪)细化后的运动矢量以落入有效运动矢量范围内。视频编码器200和视频解码器300可以配置为将有效范围确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是运动矢量比特深度,P是表示运动矢量精度的比特(例如,对于1/16像素MV精度,P=4)。
在本公开的另一示例中,当执行运动矢量细化(例如,双向匹配,例如在JEM中)时,视频编码器200和视频解码器300可以配置为如果细化的运动矢量不落入有效运动矢量范围内,则将细化的运动矢量还原为非细化的运动矢量(例如,细化处理之前的运动矢量)。如上所述,视频编码器200和视频解码器300可以配置为将有效运动矢量范围确定为[-2(N -P-1),2(N-P-1)-(1-1/2(P))],其中N是运动矢量比特深度,P是表示分数运动矢量的比特(例如,对于1/16像素运动矢量精度,P=4)。
在本公开的另一示例中,当执行运动矢量细化时(例如,JEM中的双向匹配),视频编码器200和视频解码器300可以配置为不允许细化过程导致运动矢量的分量的值超出有效范围。有效范围可以确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是比特深度,P是表示运动矢量精度的比特(例如,对于1/16像素MV精度,P=4)。
图5是示出了本公开的示例编码方法的流程图。图5的技术可以由视频编码器200和/或视频解码器300的一个或多个结构组件来执行,包括视频编码器200的运动估计单元222和运动补偿单元224,以及运动补偿单元316。
在本公开的一个示例中,视频编码器200和视频解码器300可以配置为确定第一视频数据块的运动矢量(360)。运动矢量可以是用于编码视频数据块的任何类型的运动矢量,包括用于合并模式、AMVP模式、仿射运动补偿模式的运动矢量,或者用于解码器侧运动矢量导出技术(例如,双向匹配)的其他运动矢量。视频编码器200和视频解码器还可以配置为确定运动矢量的运动矢量精度和运动矢量比特深度(362),然后基于运动矢量精度和运动矢量比特深度(364)来确定用于运动矢量的分量(例如,x和y分量)的有效运动矢量范围。在一个示例中,运动矢量的比特深度是18比特,并且运动矢量的运动矢量精度是1/16像素运动矢量精度。
在一些示例中,视频编码器200和视频解码器300可以配置为对运动矢量执行缩放或细化处理(366)。例如,当运动矢量是时间运动矢量候选时,视频编码器200和视频解码器300可以配置为对运动矢量执行缩放处理。在其他示例中,视频编码器200和视频解码器300可以配置为在根据仿射模式执行预测时对运动矢量执行缩放处理。在其他示例中,视频编码器200和视频解码器300可以配置为在执行双向匹配时对运动矢量执行细化处理。
在缩放或细化过程之后,视频编码器200和视频解码器300可以配置为确定运动矢量的分量是否在有效范围之外(368)。在一个示例中,有效运动矢量范围被定义为[-2(N -P-1),2(N-P-1)-(1-1/2(P))],其中N是运动矢量的比特深度,P表示运动矢量的运动矢量精度。如果运动矢量的分量不在有效范围之外,则视频编码器200和视频解码器300可以配置为使用未裁剪的运动矢量(例如,在缩放或细化之后没有进一步修正的运动矢量)来编码(例如,编码或解码)视频数据块(374)。
如果运动矢量的分量在有效范围之外,则视频编码器200和视频解码器300可以配置为将运动矢量的分量裁剪到有效范围(370)。视频编码器200和视频解码器300可以配置为然后使用裁剪的运动矢量对视频数据块进行编码(即,分别编码或解码)(372)。
示例运动矢量存储技术2
在本公开的另一示例中,视频编码器200和视频解码器300可以配置为对每个运动矢量的语法元素(例如,标志)进行编码/解码,以指示运动矢量是低精度(例如,1/4像素)还是高精度(例如,1/16像素)。在一些示例中,视频编码器200和视频解码器300可以配置为编码/解码其值可以指示三个或更多个运动矢量精度的多比特语法元素。当使用固定长度的比特来存储运动矢量时,对于不同的运动矢量精度,有效运动矢量范围是不同的。例如,当使用16比特来存储运动矢量的每个分量时,当运动矢量精度为1/4像素时,运动矢量的有效范围为[-8192.00,8191.75]整数像素。在高精度(以1/16像素精度存储)中,运动矢量的有效范围是[-2048.00,2047.09375]整数像素。
在该方案下,视频数据块的任何运动矢量导出或信令都将受到范围限制。如果运动矢量超出范围,则视频编码器200和视频解码器300可以配置为在存储运动矢量之前或者甚至在运动矢量用于其它编码过程(例如,运动补偿或导出其它运动信息)之前对运动矢量执行进一步的修改。在其他示例中,视频编码器200和视频解码器300可以配置为放弃超出范围的运动矢量以供将来使用。
下面示出了一些进一步的示例修正。当执行运动矢量缩放(例如,用于HEVC中的时间MV预测的缩放)时,视频编码器200和视频解码器300可以配置为修正(例如,裁剪)缩放的运动矢量以落入有效运动矢量范围内。有效范围可以确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是比特深度,P是用于表示分数运动矢量的比特(例如,对于1/4像素运动矢量精度,P=2,对于1/16像素运动矢量精度,P=4)。
在另一示例中,当执行运动矢量缩放(例如,用于HEVC中的时间MV预测的缩放)时,视频编码器200和视频解码器300可以配置为改变缩放的运动矢量的精度以落入有效运动矢量范围内。有效范围可以确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是比特深度,P是用于表示分数运动矢量的比特(例如,对于1/4像素运动矢量精度,P=2,对于1/16像素运动矢量精度,P=4)。
在另一示例中,当执行运动矢量缩放(例如,用于HEVC中的时间运动矢量预测的缩放)时,如果缩放后的运动矢量不落入有效运动矢量范围内,视频编码器200和视频解码器300可以配置为将缩放的运动矢量标记为无效。当被标记为无效时,视频编码器200和视频解码器300可以配置为不使用这样的运动矢量。同样,有效范围可以确定为[-2(N-P-1),2(N -P-1)-(1-1/2(P))],其中N是比特深度,P是用于表示分数运动矢量的比特(例如,对于1/4像素运动矢量精度,P=2,对于1/16像素运动矢量精度,P=4)。无效缩放可能会导致不可用的运动矢量预测器或合并候选。在另一示例中,无效缩放可能导致没有运动矢量缩放,因此缩放之前和之后的运动矢量是相同的(即,缩放因子等于1)。
在该示例中,当执行运动矢量细化(例如,JEM中的双向匹配)时,视频编码器200和视频解码器300可以配置为修正(例如,裁剪)细化的运动矢量落入有效运动矢量范围内。有效范围可以确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是比特深度,P是用于表示mv精度的比特(例如,对于1/4像素运动矢量精度,P=2,对于1/16像素运动精度,P=4)。
当执行运动矢量细化(例如,JEM中的双向匹配)时,视频编码器200和视频解码器300可以配置为将细化的运动矢量还原为未细化的运动矢量(例如,细化前的运动矢量分量的值)。有效范围可以确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是比特深度,P是用于表示mv精度的比特(例如,对于1/4像素运动矢量精度,P=2,对于1/16像素运动精度,P=4)。
在运动矢量细化(例如,JEM中的双向匹配)期间,视频编码器200和视频解码器300可以配置为限制搜索过程,使得搜索过程不会超出有效范围。有效范围可以确定为[-2(N -P-1),2(N-P-1)-(1-1/2(P))],其中N是比特深度,P是用于表示mv精度的比特(例如,对于1/4像素运动矢量精度,P=2,对于1/16像素运动精度,P=4)。
当从两个或更多个运动矢量导出合成运动矢量时,诸如加权平均多个运动矢量,可能存在多于一个运动精度。在该示例中,视频编码器200和视频解码器300可以配置为选择一个运动矢量精度作为运动矢量精度以执行运动矢量合成。在一些示例中,视频编码器200和视频解码器300可以配置为将所有源运动矢量预测器缩放到所选择的运动矢量精度,并且合成的运动矢量可以被修正(例如,裁剪)以在所选择的运动矢量精度的有效运动矢量范围内。
在其他示例中,视频编码器200和视频解码器300可以配置为选择一个运动矢量精度作为运动矢量精度以执行运动矢量合成。视频编码器200和视频解码器300可以配置成将所有源运动矢量预测器缩放到所选择的运动矢量精度。当合成运动矢量在所选运动矢量精度的有效运动矢量范围之外时,视频编码器200和视频解码器300可以配置为将合成运动矢量预测器标记为无效,并且在任何运动矢量预测处理中不使用合成运动矢量预测器。
示例运动矢量存储技术3
在另一示例中,视频编码器200和视频解码器300可以配置为用于每个块(块可以是编码单元、预测单元或任何类型的单元以编码一个像素块)编码和解码诸如标志的语法元素,以指示块的运动矢量是低精度(例如,1/4像素)还是高精度(例如,1/16像素)。当使用固定长度的比特存储运动矢量时,使用不同的运动矢量精度,有效的运动矢量范围是不同的。例如,当使用16比特来存储运动矢量的每个分量时,当运动矢量精度为1/4像素时,运动矢量的有效范围为[-8192.00,8191.75]整数像素。在高精度(例如,以1/16像素精度存储)中,运动矢量的有效范围是[-2048.00,2047.09375]整数像素。
在该方案下,块的任何运动矢量导出或信令都将受到范围限制。如果运动矢量超出范围,则视频编码器200和视频解码器300可以配置为在存储运动矢量之前或者甚至在用于其它视频编码过程(例如,运动补偿或导出其它运动信息)之前对运动矢量执行进一步的修正。在其他示例中,视频编码器200和视频解码器300可以配置为不将超出范围的运动矢量用于未来的视频编码处理。其他可能的修正如下所示。
当执行运动矢量缩放(例如,在执行类似于HEVC的操作的编解码器中用于时间运动矢量预测的缩放)时,视频编码器200和视频解码器300可以配置为修正(例如,修正)缩放的运动矢量以落入有效运动矢量范围内。有效范围可以确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是比特深度,P是用于表示mv精度的比特(例如,对于1/4像素运动矢量精度,P=2,对于1/16像素运动精度,P=4)。
在另一示例中,当执行运动矢量缩放(例如,在执行类似于HEVC的操作的编解码器中用于时间运动矢量预测的缩放)时,视频编码器200和视频解码器300可以配置为将缩放的运动矢量的精度改变为落入有效运动矢量范围内。有效范围可以确定为[-2(N-P-1),2(N -P-1)-(1-1/2(P))],其中N是比特深度,P是用于表示mv精度的比特(例如,对于1/4像素运动矢量精度,P=2,对于1/16像素运动精度,P=4)。
在另一示例中,当执行运动矢量缩放(例如,在执行类似于HEVC的操作的编解码器中用于时间运动矢量预测的缩放)时,视频编码器200和视频解码器300可以配置为如果缩放的运动矢量不落入有效运动矢量范围内,则将缩放的运动矢量标记为无效。视频编码器200和视频解码器300可以配置为不使用被标记为无效的运动矢量。有效范围可以确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是比特深度,P是用于表示mv精度的比特(例如,表示1/4像素运动矢量精度,P=2,表示1/16像素运动精度,P=4)。无效缩放可能会导致不可用的运动矢量预测器或合并候选。在另一示例中,无效缩放可能导致没有运动矢量缩放,因此缩放之前和之后的运动矢量是相同的(即,缩放因子等于1)。
当执行运动矢量细化(例如,诸如在JEM中的双向匹配)时,视频编码器200和视频解码器300可以配置为修正(例如,裁剪)细化的运动矢量以落入有效运动矢量范围内。有效范围可以确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是比特深度,P是用于表示mv精度的比特(例如,对于1/4像素运动矢量精度,P=2,对于1/16像素运动精度,P=4)。
在另一示例中,当执行运动矢量细化(例如,诸如在JEM中的双向匹配)时,视频编码器200和视频解码器300可以配置为将细化的运动矢量还原为未细化的运动矢量(例如,细化前的运动矢量的分量的值)。有效范围可以确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是比特深度,P是用于表示mv精度的比特(例如,对于1/4像素运动矢量精度,P=2,对于1/16像素运动精度,P=4)。
在另一示例中,在运动矢量细化(例如,诸如JEM中的双向匹配)期间,视频编码器200和视频解码器300可以配置为执行搜索处理,使得搜索处理不能超出有效范围。有效范围可以确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是比特深度,P是用于表示mv精度的比特(例如,对于1/4像素运动矢量精度,P=2,对于1/16像素运动精度,P=4)。
在另一示例中,当从两个或多个运动矢量(诸如多个运动矢量的加权平均和/或HEVC的组合双向预测候选)导出合成运动矢量时,运动矢量可以具有多于一个运动矢量精度。在该示例中,视频编码器200和视频解码器300可以配置为选择一个运动矢量精度作为运动矢量精度以执行运动矢量合成。所有源运动矢量预测器可以被缩放到所选择的运动矢量精度,并且合成的运动矢量可以被修正(例如,裁剪)以在所选择的运动矢量精度的有效运动矢量范围内。
在另一示例中,视频编码器200和视频解码器300可以配置为选择一个运动矢量精度作为运动矢量精度以执行运动矢量合成。所有源运动矢量预测器都可以缩放到选定的运动矢量精度。当合成运动矢量超出所选运动矢量精度的有效运动矢量范围时,认为合成运动矢量预测器无效。
更多示例
在所有先前描述的技术之上,示例可以包括不同的比特深度以用于存储运动矢量的x分量和y分量。视频编码器200可以在编码的视频比特流中的一个或多个参数集中将比特深度发送给视频解码器300。例如,当使用固定长度(例如,16比特)来存储运动矢量时,x分量和y分量都使用16比特来存储运动矢量分量。在一个示例中,x分量可以使用从y分量的比特借用的N个比特来存储运动矢量。例如,如果N=2,则视频编码器200和视频解码器300可以配置为使用18比特来存储x分量,并且使用14比特来存储y分量。根据所选择的数字N,x分量和y分量的有效运动矢量范围也不同。
关于来自诸如HEVC或JEM的现有编解码器的帧间预测工具或修改的帧间预测工具描述了以上某些示例。本领域技术人员将认识到,根据在此的示例,但是如本领域中另外描述和已知的,这样的示例使用这样的修正的帧间预测工具来定义新的编解码器。
结合在此公开的实施例描述的各种说明性逻辑块、模块、电路和算法步骤可以实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,上面总体上根据其功能描述了各种说明性组件、块、模块、电路和步骤。这种功能是以硬件实现还是以软件实现取决于对整个系统施加的特定应用程序和设计约束。技术人员可以针对每个特定应用以不同方式实现所描述的功能,但是这种实现决定不应被解释为导致偏离本发明的范围。
在此描述的技术可以以硬件、软件、固件或其任意组合来实现。这样的技术可以在诸如通用计算机、无线通信设备手持机或具有多种用途的集成电路设备(包括在无线通信设备手持机和其他设备中的应用)的各种设备中的任何设备中实现。被描述为模块或组件的任何特征可以在集成逻辑设备中一起实现,或者分别实现为离散的但可互操作的逻辑设备。如果以软件实现,则该技术可以至少部分地由计算机可读数据存储介质实现,该计算机可读数据存储介质包括程序代码,该程序代码包括在被执行时执行上述方法中的一个或多个的指令。计算机可读数据存储介质可以形成计算机程序产品的一部分,该计算机程序产品可以包括包装材料。计算机可读介质可以包括存储器或数据存储介质,诸如随机存取存储器(RAM),诸如同步动态随机存取存储器(SDRAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁或光数据存储介质和类似。另外地或可替换地,该技术可以至少部分地通过计算机可读通信介质来实现,该计算机可读通信介质以指令或数据结构的形式携带或传递程序代码,并且可以由计算机访问、读取和/或执行,诸如传播的信号或波。
程序代码可以由处理器执行,处理器可以包括一个或多个处理器,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其他等效的集成或离散逻辑电路。这样的处理器可以配置为执行本公开中描述的任何技术。通用处理器可以是微处理器;但是可替换地,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、与DSP核心结合的一个或多个微处理器,或任何其他这样的配置。因此,在此使用的术语“处理器”可以指任何前述结构、前述结构的任何组合、或适合于实现在此描述的技术的任何其他结构或装置。此外,在一些方面,在此描述的功能可以在配置用于编码和解码的专用软件模块或硬件模块中提供,或者结合在组合视频编码器-解码器(CODEC)中。
在此讨论的编码技术可以是示例视频编码和解码系统中的实施例。一种系统包括源设备,该源设备提供编码的视频数据,以便稍后由目标设备解码。特别地,源设备经由计算机可读介质将视频数据提供给目标设备。源设备和目标设备可以包括大范围的设备中的任何一个,包括台式计算机、笔记本(即,便携式计算机)计算机、平板计算机、机顶盒、诸如所谓的“智能”电话的电话手持机、所谓的“智能”垫、电视机、摄像机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备,或类似。在某些情况下,源设备和目标设备可以配备用于无线通信。
目标设备可以经由计算机可读介质接收要解码的编码视频数据。计算机可读介质可以包括能够将编码的视频数据从源设备移动到目标设备的任何类型的介质或设备。在一个示例中,计算机可读介质可以包括通信介质,以使源设备能够将编码的视频数据直接实时地发送到目标设备。编码的视频数据可以根据通信标准进行调制,诸如无线通信协议,并发送到目标设备。通信介质可以包括任何无线或有线通信介质,诸如无线电频率(RF)频谱或一个或多个物理传输线。通信介质可以构成基于分组网络的一部分,诸如局域网、广域网或诸如互联网的全球网络。通信介质可以包括路由器、交换机、基站或任何其他可能有助于从源设备到目标设备通信的设备。
在一些示例中,编码的数据可以从输出接口输出到存储设备。类似地,可以通过输入接口从存储设备中访问编码的数据。存储设备可以包括各种分布式或本地访问的数据存储介质,例如硬盘驱动器、蓝光光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器或任何其他适合存储编码视频数据的数字存储介质。在另一个示例中,存储设备可能对应于文件服务器或其他中间存储设备,其可以存储由源设备生成的编码的视频。目标设备经由流或下载可以从存储设备访问存储的视频数据。文件服务器可以是能够存储编码的视频数据并将编码的视频数据发送到目标设备的任何类型的服务器。示例文件服务器包括web服务器(例如网站)、FTP服务器、网络附加存储(NAS)设备或本地磁盘驱动器。目标设备可以通过任何标准数据连接访问编码的视频数据,包括互联网连接。这可以包括无线信道(例如,Wi-Fi连接)、有线连接(例如DSL、电缆调制解调器等),或两者组合,适合访问存储在文件服务器上的编码的视频数据。从存储设备中发送编码的视频数据可能是流发送、下载发送或其组合。
本公开的技术不必限于无线应用程序或设置。该技术可用于视频编码,以支持各种多媒体应用中的任何一个,诸如空中电视广播、有线电视发送、卫星电视发送、互联网视频流发送,诸如经HTTP(DASH)动态自适应视频流、编码到数据存储介质的数字视频、解码存储在数据存储介质中的数字视频或其他应用。在一些例子中,系统可以配置为支持单向或双向视频发送,以支持诸如视频流、视频回放、视频广播和/或视频电话的应用。
在一个示例中,源设备包括视频源、视频编码器和输出接口。目标设备可以包括输入接口、视频解码器和显示设备。源设备的视频编码器可以配置为应在此公开的技术。在其他示例中,源设备和目标设备可能包括其他组件或布置。例如,源设备可以接收来自外部视频源的视频数据,诸如外部摄像机。同样,目标设备可以与外部显示设备进行接口,而不是包括集成显示设备。
上面的示例系统仅仅是一个示例。并行处理视频数据的技术可以由任何数字视频编码和/或解码设备来执行。尽管一般来说,这种公开的技术由视频编码设备执行,但该技术也可以由视频编码器/解码器执行,通常称为“CODEC”。此外,本公开的技术也可以由视频预处理器执行。源设备和目标设备仅是这样的编码设备的示例,其中源设备生成编码的视频数据以发送到目标设备。在一些示例中,源和目标设备可以以基本上对称的方式操作,使得每个设备都包括视频编码和解码组件。因此,示例系统可以支持视频设备之间单向或双向视频发送,例如用于视频流、视频回放、视频广播或视频电话。
视频源可以包括视频捕获设备,诸如视频摄像机、包含先前捕获的视频的视频存档和/或视频馈送接口,以接收来自视频内容提供商的视频。作为另一替代,视频源可以生成基于计算机图形化的数据作为源视频,或者是实时视频、存档视频和计算机生成的视频的组合。在一些情况下,如果视频源是视频摄像机,源设备和目标设备可能形成所谓的摄像机电话或视频电话。然而,如上所述,本公开中描述的技术通常可以适用于视频编码,并且可以应用于无线和/或有线应用。在每种情况下,捕获的、预捕获的或计算机生成的视频都可以由视频编码器进行编码。然后,编码的视频信息可以通过输出接口输出到计算机可读介质中。
如上所述,计算机可读介质可以包括诸如无线广播或有线网络发送的瞬时介质,或者诸如硬盘、闪存驱动器、光盘、数字视频盘、蓝光盘或其他计算机可读介质的存储介质(即,非瞬时存储介质)。在一些示例中,网络服务器(未示出)可以例如经由网络发送从源设备接收编码的视频数据,并将编码的视频数据提供给目标设备。类似地,诸如磁盘冲压设备的介质生产设施的计算设备可以从源设备接收编码的视频数据,并且产生包含编码的视频数据的盘。因此,在各种示例中,计算机可读介质可以被理解为包括各种形式的一个或多个计算机可读介质。
目标设备的输入接口从计算机可读介质接收信息。计算机可读介质的信息可以包括由视频编码器定义的、也由视频解码器使用的语法信息,该语法信息包括描述块和其他编码单元(例如,图片组(GOP))的特征和/或处理的语法元素。显示设备向用户显示解码的视频数据,并且可以包括各种显示设备中的任何一个,诸如阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一类型的显示设备。已经描述了本发明的各种实施例。
应当认识到,根据示例,在此描述的任何技术的某些动作或事件可以以不同的顺序执行,可以被添加、合并或完全省略(例如,并非所有描述的动作或事件对于技术的实践都是必要的)。此外,在某些示例中,动作或事件可以例如通过多线程处理、中断处理或多个处理器并发地而不是顺序地执行。
已经描述了各种示例。这些和其他示例在以下权利要求的范围内。

Claims (30)

1.一种配置为解码视频数据的装置,所述装置包括:
存储器,配置为存储视频数据;以及
与所述存储器通信的一个或多个处理器,所述一个或多个处理器在电路中实现,所述一个或多个处理器配置为:
确定用于第一视频数据块的第一运动矢量;
缩放所述第一运动矢量以产生缩放的运动矢量;
基于所述第一运动矢量的第一比特深度和所述第一运动矢量的第一运动矢量精度,确定第一有效运动矢量范围;
将所述缩放的运动矢量裁剪到所述第一有效运动矢量范围以产生第一裁剪的运动矢量;以及
使用所述第一裁剪的运动矢量解码所述第一视频数据块。
2.如权利要求1所述的装置,其中,为了确定所述第一有效运动矢量范围,所述一个或多个处理器还配置为将所述第一有效运动矢量范围确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是所述第一运动矢量的所述第一比特深度,并且P表示所述第一运动矢量的所述第一运动矢量精度。
3.如权利要求1所述的装置,其中,所述一个或多个处理器还配置为:
确定所述第一运动矢量的所述第一运动矢量精度;
基于所述第一运动矢量精度确定所述第一运动矢量的所述第一比特深度;
以确定的第一比特深度将所述第一运动矢量存储在所述存储器中。
4.如权利要求1所述的装置,其中,为了使用所述第一裁剪的运动矢量解码所述第一视频数据块,所述一个或多个处理器配置为:
使用所述第一裁剪的运动矢量和仿射模式解码所述第一视频数据块。
5.如权利要求1所述的装置,其于,所述第一运动矢量的所述第一比特深度为18比特,并且其中所述第一运动矢量的所述第一运动矢量精度为1/16像素运动矢量精度。
6.如权利要求1所述的装置,其中,所述一个或多个处理器还配置为:
确定用于第二视频数据块的第二运动矢量;
对所述第二运动矢量执行运动矢量细化处理,以产生细化的运动矢量;
基于所述第二运动矢量的第二比特深度和所述第二运动矢量的第二运动矢量精度,确定第二有效运动矢量范围;
将所述细化的运动矢量裁剪到所述第二有效运动矢量范围,以产生第二裁剪的运动矢量;以及
使用所述第二裁剪的运动矢量解码所述第二视频数据块。
7.如权利要求6所述的装置,其中,为了确定所述第二有效运动矢量范围,所述一个或多个处理器还配置为将所述第二有效运动矢量范围确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是所述第二运动矢量的所述第二比特深度,并且P表示所述第二运动矢量的所述第二运动矢量精度。
8.如权利要求6所述的装置,其中,为了使用所述第二裁剪的运动矢量解码所述第二视频数据块,所述一个或多个处理器配置为:
使用所述第二裁剪的运动矢量和双向匹配模式解码所述第二视频数据块。
9.如权利要求1所述的装置,还包括:
显示器,配置为显示用于显示的解码的第一视频数据块。
10.一种用于解码视频数据的方法,所述方法包括:
确定用于第一视频数据块的第一运动矢量;
缩放所述第一运动矢量以产生缩放的运动矢量;
基于所述第一运动矢量的第一比特深度和所述第一运动矢量的第一运动矢量精度,确定第一有效运动矢量范围;
将所述缩放的运动矢量裁剪到所述第一有效运动矢量范围以产生第一裁剪的运动;以及
使用所述第一裁剪的运动矢量解码所述第一视频数据块。
11.如权利要求10所述的方法,其中,确定所述第一有效运动矢量范围包括将所述第一有效运动矢量范围确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是所述第一运动矢量的所述第一比特深度,并且P表示所述第一运动矢量的所述第一运动矢量精度。
12.如权利要求10所述的方法,所述方法还包括:
确定所述第一运动矢量的所述第一运动矢量精度;
基于所述第一运动矢量精度确定所述第一运动矢量的所述第一比特深度;
以确定的第一比特深度将所述第一运动矢量存储在所述存储器中。
13.如权利要求10所述的方法,其中,使用所述第一裁剪的运动矢量解码所述第一视频数据块包括:
使用所述第一裁剪的运动矢量和仿射模式解码所述第一视频数据块。
14.如权利要求10所述的方法,其中,所述第一运动矢量的所述第一比特深度为18比特,并且其中所述第一运动矢量的所述第一运动矢量精度为1/16像素运动矢量精度。
15.如权利要求10所述的方法,还包括:
确定用于第二视频数据块的第二运动矢量;
对所述第二运动矢量执行运动矢量细化处理,以产生细化的运动矢量;
基于所述第二运动矢量的第二比特深度和所述第二运动矢量的第二运动矢量精度,确定第二有效运动矢量范围;
将所述细化的运动矢量裁剪到所述第二有效运动矢量范围以产生第二裁剪的运动矢量;以及
使用所述第二裁剪的的运动矢量解码所述第二视频数据块。
16.如权利要求15所述的方法,其中,确定所述第二有效运动矢量范围包括将所述第二有效运动矢量范围确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是所述第二运动矢量的所述第二比特深度,并且P表示所述第二运动矢量的所述第二运动矢量精度。
17.如权利要求15所述的方法,其中,使用所述第二裁剪的运动矢量解码所述第二视频数据块包括:
使用所述第二裁剪的运动矢量和双向匹配模式解码所述第二视频数据块。
18.如权利要求10所述的方法,所述方法还包括:
显示用于显示的解码的第一视频数据块。
19.一种非暂时性计算机可读存储介质,其存储指令,当执行所述指令时,使得一个或多个处理器配置为解码视频数据以:
确定用于第一视频数据块的第一运动矢量;
缩放所述第一运动矢量以产生缩放的运动矢量;
基于所述第一运动矢量的第一比特深度和所述第一运动矢量的第一运动矢量精度,确定第一有效运动矢量范围;
将所述缩放的运动矢量裁剪到所述第一有效运动矢量范围以产生第一裁剪的运动矢量;以及
使用所述第一裁剪的运动矢量解码所述第一视频数据块。
20.如权利要求19所述的非暂时性计算机可读存储介质,其中,为了确定所述第一有效运动矢量范围,所述指令还使得所述一个或多个处理器将所述第一有效运动矢量范围确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是所述第一运动矢量的所述第一比特深度,并且P表示所述第一运动矢量的所述第一运动矢量精度。
21.如权利要求19所述的非暂时性计算机可读存储介质,其中,为了使用所述第一裁剪的运动矢量来解码所述第一视频数据块,所述指令还使得所述一个或多个处理器:
使用所述第一裁剪的运动矢量和仿射模式解码所述第一视频数据块。
22.一种配置为编码视频数据的装置,所述装置包括:
存储器,配置为存储视频数据;以及
与所述存储器通信的一个或多个处理器,所述一个或多个处理器在电路中实现,所述一个或多个处理器配置为:
确定用于第一视频数据块的第一运动矢量;
缩放所述第一运动矢量以产生缩放的运动矢量;
基于所述第一运动矢量的第一比特深度和所述第一运动矢量的第一运动矢量精度,确定第一有效运动矢量范围;
将所述缩放的运动矢量裁剪到所述第一有效运动矢量范围以产生第一裁剪的运动矢量;以及
使用所述第一裁剪的运动矢量编码所述第一视频数据块。
23.如权利要求22所述的装置,其中,为了确定所述第一有效运动矢量范围,所述一个或多个处理器还配置为将所述第一有效运动矢量范围确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是所述第一运动矢量的所述第一比特深度,并且P表示所述第一运动矢量的所述第一运动矢量精度。
24.如权利要求22所述的装置,其中,所述一个或多个处理器还配置为:
确定所述第一运动矢量的所述第一运动矢量精度;
基于所述第一运动矢量精度确定所述第一运动矢量的所述第一比特深度;以及
以确定的第一比特深度将所述第一运动矢量存储在所述存储器中。
25.如权利要求22所述的装置,其中,为了使用所述第一裁剪的运动矢量来编码所述第一视频数据块,所述一个或多个处理器配置为:
使用所述第一裁剪的运动矢量和仿射模式编码所述第一视频数据块。
26.如权利要求22所述的装置,其中,所述第一运动矢量的所述第一比特深度为18比特,并且其中所述第一运动矢量的所述第一运动矢量精度为1/16像素运动矢量精度。
27.如权利要求22所述的装置,其中,所述一个或多个处理器还配置为:
确定用于第二视频数据块的第二运动矢量;
对所述第二运动矢量执行运动矢量细化处理,以产生细化的运动矢量;
基于所述第二运动矢量的第二比特深度和所述第二运动矢量的第二运动矢量精度,确定第二有效运动矢量范围;
将所述细化的运动矢量裁剪到所述第二有效运动矢量范围,以产生第二裁剪的运动矢量;以及
使用所述第二裁剪的运动矢量编码所述第二视频数据块。
28.如权利要求27所述的装置,其中,为了确定所述第二有效运动矢量范围,所述一个或多个处理器还配置为将所述第二有效运动矢量范围确定为[-2(N-P-1),2(N-P-1)-(1-1/2(P))],其中N是所述第二运动矢量的所述第二比特深度,并且P表示所述第二运动矢量的所述第二运动矢量精度。
29.如权利要求27所述的装置,其中,为了使用所述第二裁剪的运动矢量来编码所述第二视频数据块,所述一个或多个处理器配置为:
使用所述第二裁剪的运动矢量和双向匹配模式编码所述第二视频数据块。
30.如权利要求22所述的装置,还包括:
摄像机,配置为捕获所述第一视频数据块。
CN201980031435.3A 2018-05-12 2019-05-10 视频编码中高精度运动矢量的存储 Pending CN112119636A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862670763P 2018-05-12 2018-05-12
US62/670,763 2018-05-12
US16/408,217 2019-05-09
US16/408,217 US10873748B2 (en) 2018-05-12 2019-05-09 Storage of high precision motion vectors in video coding
PCT/US2019/031841 WO2019222060A1 (en) 2018-05-12 2019-05-10 Storage of high precision motion vectors in video coding

Publications (1)

Publication Number Publication Date
CN112119636A true CN112119636A (zh) 2020-12-22

Family

ID=68464384

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980031435.3A Pending CN112119636A (zh) 2018-05-12 2019-05-10 视频编码中高精度运动矢量的存储

Country Status (5)

Country Link
US (1) US10873748B2 (zh)
EP (1) EP3794823A1 (zh)
KR (1) KR20210007985A (zh)
CN (1) CN112119636A (zh)
WO (1) WO2019222060A1 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10609384B2 (en) * 2017-09-21 2020-03-31 Futurewei Technologies, Inc. Restriction on sub-block size derivation for affine inter prediction
WO2019244051A1 (en) 2018-06-19 2019-12-26 Beijing Bytedance Network Technology Co., Ltd. Selected mvd precision without mvp truncation
TWI729483B (zh) * 2018-09-04 2021-06-01 聯發科技股份有限公司 視訊編解碼系統的運動向量湊整統一的方法以及裝置
EP4325859A3 (en) * 2018-09-19 2024-05-15 Beijing Bytedance Network Technology Co., Ltd. Syntax reuse for affine mode with adaptive motion vector resolution
US11706442B2 (en) * 2018-09-21 2023-07-18 Lg Electronics Inc. Process and apparatus for controlling compressed motion vectors
WO2020060351A1 (ko) * 2018-09-21 2020-03-26 엘지전자 주식회사 움직임 벡터를 도출하는 방법 및 그 장치
WO2020071672A1 (ko) * 2018-10-02 2020-04-09 엘지전자 주식회사 움직임 벡터를 압축하는 방법 및 그 장치
US10904550B2 (en) * 2019-01-12 2021-01-26 Tencent America LLC Method and apparatus for video coding
EP3895429A4 (en) 2019-01-31 2022-08-10 Beijing Bytedance Network Technology Co., Ltd. CONTEXT FOR CODE AN ADAPTIVE MOTION VECTOR RESOLUTION IN AFFINE MODE
WO2020156549A1 (en) 2019-02-02 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Buffer access methods for intra block copy in video coding
CN113491114A (zh) * 2019-02-20 2021-10-08 北京达佳互联信息技术有限公司 用于帧间预测的运动向量舍入、截取和存储的方法和装置
EP3915265A4 (en) 2019-03-01 2022-06-22 Beijing Bytedance Network Technology Co., Ltd. DIRECTION-BASED PREDICTION FOR INTRA BLOCK COPY IN VIDEO CODING
CN113508581B (zh) 2019-03-04 2023-11-14 北京字节跳动网络技术有限公司 视频编解码中的帧内块复制中的实施方式方面
EP3939310A4 (en) * 2019-03-11 2022-07-27 Telefonaktiebolaget LM Ericsson (publ) MOTION REFINING AND WEIGHTED PREDICTION
KR102662616B1 (ko) 2019-05-21 2024-04-30 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 어파인 모드를 위한 적응적 모션 벡터 차이 해상도
KR20230170800A (ko) 2019-07-06 2023-12-19 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 카피를 위한 가상 예측 버퍼
BR112022000358A2 (pt) 2019-07-10 2022-05-10 Beijing Bytedance Network Tech Co Ltd Método e aparelho para processar dados de vídeo e meios de armazenamento e gravação não transitórios legíveis por computador
EP3981146A4 (en) * 2019-07-11 2022-08-03 Beijing Bytedance Network Technology Co., Ltd. BITSTREAM CONFORMITY RESTRICTIONS FOR INTRA-BLOCK COPY IN VIDEO ENCODING
US11218718B2 (en) * 2019-08-26 2022-01-04 Tencent America LLC Adaptive motion vector resolution signaling
WO2021073630A1 (en) 2019-10-18 2021-04-22 Beijing Bytedance Network Technology Co., Ltd. Syntax constraints in parameter set signaling of subpictures
CN115280774A (zh) * 2019-12-02 2022-11-01 抖音视界有限公司 在仿射模式下与运动向量差分merge
WO2023131047A1 (en) * 2022-01-05 2023-07-13 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110038419A1 (en) * 2009-08-13 2011-02-17 Samsung Electronics Co., Ltd. Method and apparatus for encoding/decoding image by controlling accuracy of motion vector
US20130163668A1 (en) * 2011-12-22 2013-06-27 Qualcomm Incorporated Performing motion vector prediction for video coding
CN103583044A (zh) * 2011-01-31 2014-02-12 韩国电子通信研究院 用于使用运动向量来编码/解码图像的方法和设备
CN107592972A (zh) * 2015-05-11 2018-01-16 高通股份有限公司 用于视频数据中特定图片内的帧间译码的搜索区域确定

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9124899B2 (en) * 2012-09-28 2015-09-01 Sharp Laboratories Of America, Inc. Motion derivation and coding for scaling video
WO2017134957A1 (ja) * 2016-02-03 2017-08-10 シャープ株式会社 動画像復号装置、動画像符号化装置、および予測画像生成装置
US10462462B2 (en) * 2016-09-29 2019-10-29 Qualcomm Incorporated Motion vector difference coding technique for video coding
US10448014B2 (en) * 2017-05-23 2019-10-15 Intel Corporation Content adaptive motion compensated temporal filtering for denoising of noisy video for efficient coding
US11012715B2 (en) * 2018-02-08 2021-05-18 Qualcomm Incorporated Intra block copy for video coding

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110038419A1 (en) * 2009-08-13 2011-02-17 Samsung Electronics Co., Ltd. Method and apparatus for encoding/decoding image by controlling accuracy of motion vector
CN103583044A (zh) * 2011-01-31 2014-02-12 韩国电子通信研究院 用于使用运动向量来编码/解码图像的方法和设备
US20130163668A1 (en) * 2011-12-22 2013-06-27 Qualcomm Incorporated Performing motion vector prediction for video coding
CN107592972A (zh) * 2015-05-11 2018-01-16 高通股份有限公司 用于视频数据中特定图片内的帧间译码的搜索区域确定

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
WANG, YE-KUI: "High Efficiency Video Coding (HEVC) Defect Report 3", JOINT COLLABORATIVE TEAM ON VIDEO CODING (JCT-VC) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11 16TH MEETING:JCTVC-P1003_V1, pages 1 - 313 *

Also Published As

Publication number Publication date
KR20210007985A (ko) 2021-01-20
EP3794823A1 (en) 2021-03-24
US10873748B2 (en) 2020-12-22
WO2019222060A1 (en) 2019-11-21
US20190349588A1 (en) 2019-11-14

Similar Documents

Publication Publication Date Title
US10873748B2 (en) Storage of high precision motion vectors in video coding
US11336900B2 (en) Combined inter and intra prediction mode for video coding
CN113812157A (zh) 用于视频译码的基于置零模式的低频不可分离变换信号通知
CN113812148A (zh) 用于视频译码的参考图片重采样和帧间译码工具
CN114128259A (zh) 用于视频译码的合并模式译码
CN113748679A (zh) 用于视频编解码的帧内块复制合并数据语法
CN113424542A (zh) 用于视频编解码中带有运动矢量差的合并模式的信令
TW202123699A (zh) 具有協調的運動場儲存及運動補償的幾何分區模式
US10958928B2 (en) Decoder-side motion vector derivation for video coding
CN114128286A (zh) 视频编解码中的环绕运动补偿
US20190320181A1 (en) Generation of motion vector predictors from multiple neighboring blocks in video coding
US20210092434A1 (en) Adaptive motion vector resolution for affine motion model in video coding
CN112673636B (zh) 将运动向量取整以自适应运动向量差分辨率及提高视频译码中的运动向量存储精度
US11418793B2 (en) Adaptive affine motion vector coding
US11172212B2 (en) Decoder-side refinement tool on/off control
CN113557734A (zh) 视频译码中的系数域块差分脉冲译码调制
CN114223202A (zh) 低频不可分离变换(lfnst)信令
CN113728650A (zh) 自适应环路滤波器集合索引信令
CN113170162A (zh) 用于视频译码的共享候选列表和并行候选列表推导
CN113632483A (zh) 用于视频编解码的受约束的仿射运动继承
CN113632466A (zh) 视频数据的帧间-帧内预测模式
CN114846796A (zh) 用于视频译码中的参考图片重采样的环绕偏移
CN114128298A (zh) 调色板模式下的增量量化参数(qp)信令
CN113545054A (zh) 视频编解码中子块变换的简化
CN113892264A (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