CN107027038A - 动态参考运动矢量编码模式 - Google Patents

动态参考运动矢量编码模式 Download PDF

Info

Publication number
CN107027038A
CN107027038A CN201611226103.5A CN201611226103A CN107027038A CN 107027038 A CN107027038 A CN 107027038A CN 201611226103 A CN201611226103 A CN 201611226103A CN 107027038 A CN107027038 A CN 107027038A
Authority
CN
China
Prior art keywords
motion vector
frame
block
current block
candidate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201611226103.5A
Other languages
English (en)
Other versions
CN107027038B (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.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/131,079 external-priority patent/US10397600B1/en
Priority claimed from US15/373,518 external-priority patent/US10462457B2/en
Application filed by Google LLC filed Critical Google LLC
Publication of CN107027038A publication Critical patent/CN107027038A/zh
Application granted granted Critical
Publication of CN107027038B publication Critical patent/CN107027038B/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • 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/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness

Landscapes

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

Abstract

本发明涉及动态参考运动矢量编码模式。描述了使用参考运动矢量来减小为帧间预测而编码运动矢量需要的位量的技术。动态运动矢量编码模式使用在先前编码块和当前块之间的距离,和那些先前编码块的运动矢量的使用频率产生运动矢量候选的排名的列表。该列表用于将有效的运动矢量分配给包括可变数目的参考运动矢量的不同的帧间预测模式。

Description

动态参考运动矢量编码模式
技术领域
本公开通常涉及编码和解码视频数据,并且尤其是,涉及使用参考运动矢量的视频编码。
背景技术
数字视频流可以表示使用帧序列或者静止图像的视频。数字视频可以用于各种各样的应用,例如包括视频会议、高分辨率视频娱乐、视频广告,或者用户产生的视频的共享。数字视频流可以包含大量的数据,并且耗费巨大的计算量或者用于视频数据的处理、传输或者存储的计算设备的通信资源。已经提出减小在视频流中的数据量的各种各样的方法,包括压缩和其它的编码技术。
发明内容
按照本公开的一个实施例的用于解码视频流的方法,包括:对于当前块识别用于编码在当前帧内的当前块的参考帧,使用参考块生成用于参考帧的参考运动矢量候选列表,通过从当前块到提供运动矢量的参考块的距离,并通过运动矢量的流行性值(popularity value),排名在参考运动矢量候选列表内的每个运动矢量,运动矢量的流行性值表示运动矢量被参考块使用的水平,基于该排名将运动矢量分配给多个帧间预测模式,选择用于解码当前块的帧间预测模式,和使用帧间预测模式解码当前块。参考块可以包括当前帧的空间相邻块、在先前帧内的并置块,和在先前帧内的并置块的空间相邻块,或者其它参考块。
也提供了用于解码视频流的对应装置,例如一种处理器和存储器装置,该存储器存储使得处理器执行以上方法的指令。
按照本公开的一个实施例用于编码视频流的方法,包括:对于多个参考帧的每个,识别用于使用参考块编码在当前帧内的当前块的候选运动矢量,通过提供相应的候选运动矢量的相应参考块距当前块的距离,并且通过运动矢量的流行性值,排名在用于参考帧的参考运动矢量候选列表内的候选运动矢量,运动矢量的流行性值表示运动矢量被参考块使用的水平,基于该排名将运动矢量分配给多个帧间预测模式,选择用于编码当前块的帧间预测模式,和使用帧间预测模式编码当前块。
也提供了用于编码视频流的对应装置,例如一种包括处理器和存储器的装置,该存储器存储使得处理器执行以上方法的指令。也提供了一种或多种计算机可读介质,其提供计算机程序代码,该供计算机程序代码被布置为挡在适合的计算机装置上执行时,实施在此描述的编码和/或解码方法和装置。
在本公开的这些和其它的方面中的变化将在下面在附加的细节方面描述。
附图说明
在此处描述提到如下所述的伴随的附图,其中相同的参考数字贯穿几个视图涉及相同的部分。
图1是视频编码和解码系统的示意图。
图2是可以实现发送站或者接收站的计算设备示例的方框图。
图3是要编码和随后解码的视频流的图。
图4是按照在此处教导的一个方面的视频压缩系统的方框图。
图5是按照在此处教导的另一个方面的视频解压缩系统的方框图。
图6是按照本公开的一个实施例用于使用参考运动矢量编码视频流过程的流程图。
图7是用于解释在图6的过程内的候选运动矢量的标识的帧序列的图。
图8是按照本公开的实施例用于使用参考运动矢量解码编码的视频流过程的流程图。
具体实施方式
与编码视频流相关的压缩方案可以包括将每个图像分解为块,并且使用一个或多个技术产生数字视频输出位流以限制包括在该输出中的信息。接收的位流可以被解码以从有限的信息重新生成该块和源图像。编码视频流,或者其一部分,诸如帧或者块可以包括使用视频流中的时间和空间相似性以改善编码效率。例如,视频流的当前块可以通过基于视频流中的先前编码块预测用于当前块的运动和颜色信息,和识别在预测值和当前块之间的差值(残差),基于先前编码块编码。以这种方法,仅仅用于产生其的残差和参数需要被添加到该位流,而不是包括当前块的整体。这种技术可以称为帧间预测。
在帧间预测中的参数中的一个是运动矢量,其表示先前编码块相对于该当前块的空间位移。运动矢量可以使用运动估算的方法,诸如运动搜索。在运动搜索中,参考帧的一部分可以被转换为一连串的位置以形成预测块,其可以被从当前帧的一部分中减去以形成一系列的残差。对应于具有最小残差的位置的X和Y转换可以被选择为运动矢量。表示运动矢量的位可以包括在编码的位流中,以允许解码器再现预测块,并且解码与运动矢量相关联的编码的视频位流的该部分。
对于视频压缩方案,用于编码运动矢量的位数目可能是很大的,特别地,对于以较低的数据速率或者较高的压缩比编码的视频流。为了改善编码效率,运动矢量可以使用参考运动矢量差分地编码,即,仅仅在运动矢量和参考运动矢量之间的差值被编码。在有些情况下,参考运动矢量可以是从在视频流中先前地使用的运动矢量中选择出来的,例如,来自相邻块的最后的非零运动矢量。选择先前地使用的运动矢量编码当前的运动矢量可以进一步减小包括在编码的视频位流中的位数,并且从而减小传输和存储带宽需求。运动矢量参考模式允许编码块从先前编码的相邻块推断运动信息。
参考运动矢量候选列表可以按照在参考块和正在编码的当前块之间的距离构成。但是,仅按照该块距离排名忽略了运动矢量可以由多个块使用。在参考区域中多少像素正在使用运动矢量可以表示运动矢量是用于当前块的有效运动矢量的似然性。
如提及的,相邻块可用于构成参考运动矢量候选列表。为了编码器和解码器使用相同的信息,使用先前编码块。当以光栅扫描顺序编码时,这在可用的程度将相邻块限制为当前块的左侧和上面的相邻块。也可以考虑来自先前帧(也称作最后的帧)的并置块。但是,并置块是位于具有与当前块相同的像素位置的最后的帧中的块,因此,潜在地来自当前块的右侧和底部的有用的运动信息仍然被省略。
不考虑参考运动矢量候选列表如何构成,可能存在固定数目的运动矢量参考模式,诸如两个。固定数目的参考模式的使用可能是低效的。例如,如果参考运动矢量候选列表具有小于固定数目的运动矢量,可能需要零个运动矢量填充没有运动矢量的模式。在其它情况下,参考运动矢量候选列表可以具有大于固定数目的运动矢量。省略的运动矢量可能是比保留的更好的候选,也就是说,省略的运动矢量可能导致在编码当前块时更好的速率和/或更小的失真。
在本公开的实施例中,压缩性能可以通过采用有效的参考运动矢量排名制度而改善,继之以动态运动矢量参考模式,其充分地考虑可用的运动矢量候选列表。在排名制度中,例如,用于具有单个参考帧的块的参考运动矢量候选可以按照离当前块和覆盖范围(例如,运动矢量的使用)两者的相对距离排名。对于具有复合(例如,两个)参考帧的块,来自共享相同的参考帧组合的参考块的候选运动矢量可以以较高优先级排名。在此下面排名的选择性地是来自具有单个参考帧的相邻块的运动矢量的组合。在确定运动矢量候选时,可以考虑与并置块的下面和右边的块相关联的运动信息以便获得其运动方向。最后,动态运动矢量参考模式可以使用许多的模式,其取决于参考运动矢量候选列表的大小,使得潜在地丢失有价值的参考信息的机会减小。
参考运动矢量可以是基于在参考块和当前块之间的距离,和参考运动矢量的流行性(popularity)从候选运动矢量中选择出来的。例如,在参考块和当前块之间的距离可以基于在先前编码块中的像素和在当前块中的对应并置像素之间的以像素为单位测量的空间位移。例如,运动矢量的流行性可以基于使用该运动矢量的先前编码的像素量。使用该运动矢量的先前编码的像素越多,该运动矢量的概率越高。在一个示例中,流行性值是使用该运动矢量的先前编码的像素的数目。在另一个示例中,流行性值是在使用该运动矢量的区域内先前编码的像素的百分比。
由于当前块与在参考块中的像素的接近,在很多情况下,可能当前块具有与那些像素类似的运动特征。因此,在接近当前块的参考块中使用的候选运动矢量可能紧密地类似用于当前块的实际运动矢量。另外,由在接近当前块的参考块中最大量的像素使用的候选运动矢量将进一步类似用于当前块的实际运动矢量。由于这个缘故,具有在附近的参考块中使用的最高流行性的候选运动矢量的运动矢量可以被选择为用于当前块的实际运动矢量的参考运动矢量。较少的位可通过编码在运动矢量方面的小差别用于编码实际运动矢量,从而,改善总体编码效率。在下文中论述可以使用选择的运动矢量的其它的方法。
候选运动矢量可以局限于空间-时间相邻运动矢量。也就是说,候选运动矢量的池可以是从当前块的邻区域的区域中选择出来的。在一些视频编码方案中,特别地,其中视频帧被乱序(out of order)编码的那些,所希望的是来自远古或者未来的视频帧的运动信息包括在候选运动矢量的池中。能够乱序编码视频帧例如可以在所谓的“替换参考帧(alternate reference frame)”,也就是说,非时间相邻于紧挨在它们前面和后面编码的帧的编码中发生。替换参考帧可以是合成的帧,其在输入视频流中不出现,或者是为了预测而对于在输入视频流中的一个的复制帧,并且通常是在解码之后不显示的。这样的帧可以类似于在非相邻的未来的视频帧。乱序编码可能发生的另一个示例是通过使用所谓的“黄金参考帧(golden reference frame)”,其是可以或者可以不相邻于当前视频帧的重建的视频帧,并且存储在存储器中用作参考帧,直到例如被新的黄金参考帧取代为止。
在此处,除了相邻视频帧之外,替换参考帧和黄金参考帧(也称作替换帧和黄金帧)可用于推断用于视频数据帧的块的运动矢量候选。在首先描述本公开可以实现的环境之后,在此处描述其它的细节。
图1是视频编码和解码系统100的示意图。发送站102例如可以是具有诸如在图2中描述的硬件的内部配置的计算机。但是,发送站102的其它的实施例是可能的。例如,发送站102的处理可以在多个设备之中分配。
网络104可以连接用于视频流的编码和解码的发送站102和接收站106。特别地,视频流可以在发送站102中编码,并且编码的视频流可以在接收站106中解码。网络104例如可以是因特网。网络104还可以是局域网(LAN)、广域网(WAN)、虚拟专用网络(VPN)、蜂窝电话网络,或者在这个示例中,从发送站102到接收站106传送视频流的任何其它的装置。
在一个示例中,接收站106可以是具有诸如在图2中描述的硬件的内部配置的计算机。但是,接收站106的其它的实施例是可能的。例如,接收站106的处理可以在多个设备之中分配。
视频编码和解码系统100的其它的实施例是可能的。例如,一个实施例可以省略网络104。在另一个实施例中,视频流可以被编码,然后存储供在以后的时间里传输到接收站106,或者具有存储器的任何其它的设备。在一个实施例中,接收站106接收(例如,经由网络104、计算机总线,和/或一些通信通道)编码的视频流,并且存储供稍后解码的视频流。在一个示例实施例中,实时传输协议(RTP)用于经网络104编码的视频的传输。在另一个实施例中,可以使用除RTP以外的传输协议,例如,基于超级文本传输协议(HTTP)的视频流协议。
当在视频会议系统中使用时,例如,发送站102和/或接收站106可以包括如下所述的编码和解码视频流两者的能力。例如,接收站106可以是视频会议参加者,其从视频会议服务器(例如,发送站102)接收编码的视频位流以解码和观看,并且进一步编码和向视频会议服务器发送其自己的视频位流,供由其它的参加者解码和观看。
图2是可以实现发送站或者接收站的计算设备200示例的方框图。例如,计算设备200可以实现图1的发送站102和接收站106的一个或者两个。计算设备200可以以包括多个计算设备的计算系统的形式,或者以单个计算设备的形式,例如,移动电话、小平板计算机、膝上电脑、笔记本计算机、台式计算机等等。
在计算设备200中CPU 202可以是中央处理单元。做为选择,CPU 202可以是目前现有或者今后开发的能够操纵或者处理信息的任何其它类型的设备,或者多个设备。虽然本公开的实施例可以以如所示的单个处理器实践,例如,中央处理器202,在速度和效率方面的优点可以使用一个以上的处理器实现。
在一个实施例中,在计算设备200中的存储器204可以是只读存储器(ROM)设备或者随机存取存储器(RAM)设备。任何其他适宜类型的存储设备可以用作存储器204。存储器204可以包括由CPU 202使用总线212访问的代码和数据206。存储器204可以进一步包括操作系统208和应用程序210,该应用程序210包括允许CPU 202执行在这里描述的方法的至少一个程序。例如,应用程序210可以包括应用1至N,其进一步包括执行在这里描述的方法的视频编码应用。计算设备200还可以包括以辅助储存器214形式的附加存储器,例如其可以是随移动计算设备使用的存储卡。因为视频通信对话可以包含很大的信息量,它们可以整体或者部分地存储在辅助储存器214中,并且根据对处理的需要加载进存储器204。
计算设备200还可以包括一个或多个输出设备,诸如显示器218。在一个示例中,显示器218可以是触感显示器,其将显示器与可操作地感测触摸输入的触感单元合并。显示器218可以经由总线212连接到CPU 202。除了或者作为显示器218的替换,允许用户编程或者另外使用计算设备200的其它的输出设备可以提供。当输出设备是或者包括显示器时,该显示器可以以各种各样的方式实现,包括作为液晶显示器(LCD)、阴极射线管(CRT)显示器或者发光二极管(LED)显示器,诸如有机LED(OLED)显示器。
计算设备200还可以包括例如照相机的图像感测设备220,或者目前现有或者今后开发的任何其它的图像感测设备220或者与其通信,图像感测设备220可以感测图像,诸如用户操作计算设备200的图像。图像感测设备220可以被放置使得其指向操作计算设备200的用户。在一个示例中,图像感测设备220的位置和光轴可以被配置使得视野包括直接地接近于显示器218和从其看得见显示器218的区域。
计算设备200还可以包括例如麦克风的声音感测设备222或者目前现有或者今后开发的任何其它的声音感测设备,或者与其通信,声音感测设备222可以感测靠近计算设备200的声音。声音感测设备222可以放置使得其朝向操作计算设备200的用户,并且可以被配置为接收声音,例如,在用户操作该计算设备200的同时由用户进行的语音或者其它的发言。
虽然图2描述计算设备200的CPU 202和存储器204集成为单个单元,可以使用其它的配置。CPU 202的操作可以被分布在多个机器上(每个机器具有一个或多个处理器),其可以直接地连接或者在局部区域或者其它的网络上。存储器204可以分布在多个机器上,诸如基于网络的存储器或者在执行计算设备200操作的多个机器中的存储器。虽然在这里作为单个总线描述,计算设备200的总线212可以由多个总线组成。此外,辅助储存器214可以直接地耦合到计算设备200的其它的部件,或者可以经由网络访问,并且可以包括诸如存储卡的单个集成的单元,或者诸如多个存储卡的多个单元。计算设备200因此可以以各式各样的配置实现。
图3是要编码和随后解码的视频流300的示例的图。视频流300包括视频序列302。在下一个电平上,视频序列302包括许多的相邻帧304。虽然三个帧被描述为该相邻帧304,视频序列302可以包括许多的相邻帧304。相邻帧304然后可以被进一步细分为特殊的帧,例如,帧306。在下一个电平上,帧306可以被划分为一系列的面或者段308。段(或者面)308可以例如是允许并行处理的帧的子集。段308还可以是可以将视频数据分解为单独的颜色的帧的子集。例如,颜色视频数据的帧306可以包括亮度平面和两个色度平面。段308可以被以不同的分辨率采样。
无论帧306是否被划分为段308,帧306可以被进一步细分为块310,其可以在帧306中包含对应于例如16x16像素的数据。块310还可以被安排为包括来自像素数据的一个或多个平面的数据。块310还可以是任何其他适宜的大小,诸如4x4像素、8x8像素、16x8像素、8x16像素、16x16像素或者更大的。除非另作说明,术语块和宏块在此处可互换地使用。
图4是按照一个实施例的编码器400的方框图。编码器400可以如上所述在发送站102中实现,诸如通过提供在存储器,例如存储器204中存储的计算机软件程序。计算机软件程序可以包括机器指令,当由处理器,诸如CPU 202执行时,其使得发送站102以以下在图4和在图6中描述的方式编码视频数据。编码器400还可以作为例如包括在发送站102中专用的硬件实现。编码器400具有在前向路径(由实的连接线条示出)中执行各种各样功能以使用视频流300生成编码的或者压缩的位流420的以下的级:帧内/帧间预测级402、变换级404、量化级406,和熵编码级408。编码器400也可以包括重建路径(由虚线的连接线条示出)以重建供编码未来块的帧。在图4中,编码器400具有在重建路径中执行各种各样功能的以下的级:去量化级410、逆变换级412、重建级414和环形滤波器级416。编码器400的其它的结构变化可用于编码视频流300。
当存在用于编码的视频流300时,每个帧306可以以块为单位处理。在帧内/帧间预测级402处,每个块可以被使用帧内预测或者帧间预测或者两者组合编码。在任何情况下,预测块可以形成。在帧内预测的情况下,预测块的全部或者一部分可以由在当前帧中的已经先前编码和重建的采样形成。在帧间预测的情况下,预测块的全部或者一部分可以由在使用运动矢量确定的一个或多个先前地构成的参考帧中的采样形成。
接下来,仍然参考图4,可以在帧内/帧间预测级402处从当前块中减去该预测块以生成残差块(也称作残差)。变换级404例如在频率域中使用基于块的变换将该残差变换为变换系数。这样的基于块的变换例如包括离散余弦变换(DCT)和不对称离散正弦变换(ADST)。其它的基于块的变换是可能的。此外,不同的变换组合可以适用于单个残差。在变换应用的一个示例中,DCT将该残差块变换为频率域,这里变换系数值以空间频率为基础。最低的频率(DC)系数在矩阵的左上方,并且最高的频率系数在矩阵的右下方。值得注意,预测块的大小并且因此产生的残差块可以不同于变换块的大小。例如,预测块可以被分解为单独的变换适用于其的较小的块。
量化级406使用量化器值或者量化电平将变换系数转换为离散的量子值,其称为量化变换系数。例如,变换系数可以除以量化器值,并且被截取。量化变换系数然后由熵编码级408熵编码。熵编码可以使用许多的技术,包括令牌和二元树执行。与用于解码该块的其它的信息一起的熵编码的系数可以例如包括使用的预测类型、变换类型、运动矢量和量化器值,其然后输出为压缩的位流420。解码该块需要的信息可以被熵编码为在压缩的位流420内的块、帧、片段和/或部分头部。压缩的位流420还可以称为编码的视频流或者编码的视频位流,并且该术语将在此处可互换地使用。
在图4中的重建路径(由虚线的连接线条示出)可用于保证编码器400和解码器500两者(如下所述)使用相同的参考帧和块来解码压缩的位流420。重建路径执行类似于在解码过程(在下面更详细地论述其)期间出现的功能的功能,包括在去量化级410处对量化变换系数去量化,和在逆变换级412处对去量化变换系数逆变换来生成衍生残差块(也称作衍生残差)。在重建级414处,在帧内/帧间预测级402处预测的预测块可以被添加到衍生残差以生成重建的块。环形滤波器级416可以适用于重建的块以减小失真,诸如方块效应(blockartifacts)。
编码器400的其它的变化可用于编码压缩的位流420。例如,基于非变换的编码器400可以对于某些块或者帧直接地量化残差信号而不经变换级404。在另一个实施例中,编码器400可以具有合并为单个级的量化级406和去量化级410。
图5是按照另一个实施例的解码器500的方框图。解码器500可以在接收站106中,例如通过提供在存储器204中存储的计算机软件程序实现。计算机软件程序可以包括机器指令,当由处理器,诸如CPU202执行时,其使得接收站106以以下在图5和在图8中描述的方式解码视频数据。解码器500还可以以例如包括在发送站102或者接收站106中的硬件实现。
类似于以上论述的编码器400的重建路径的解码器500在一个示例中包括执行从压缩的位流420生成输出视频流516的各种各样功能的以下的级:熵解码级502、去量化级504、逆变换级506、帧内/帧间预测级508、重建级510、环形滤波器级512和去块滤波级514。解码器500的其它的结构变化可用于解码压缩的位流420。
当存在用于解码的压缩的位流420时,在压缩的位流420内的数据元素可以由熵解码级502解码以生成一组量化变换系数。去量化级504将量化变换系数去量化(例如,通过量化变换系数乘以量化器值),并且逆变换级506使用选择的变换类型逆变换去量化变换系数以生成衍生残差,其可能与由在编码器400中的逆变换级412生成的相同。使用从压缩的位流420解码的头部信息,解码器500可以使用帧内/帧间预测级508生成与在编码器400中,例如,在帧内/帧间预测级402处生成的相同的预测块。在重建级510处,预测块可以被添加到衍生残差以生成重建的块。环形滤波器级512可以适用于重建的块以减小方块效应。其它的滤波可以适用于重建的块。在这个示例中,去块滤波级514适用于重建的块以减小块失真,并且该结果被作为输出视频流516输出。输出视频流516还可以称为解码的视频流,并且该术语将在此处可互换地使用。
解码器500的其它的变化可用于解码压缩的位流420。例如,解码器500可以不经去块滤波级514生成输出视频流516。
如以上简要地提及的,块可以通过运动矢量预测动态的参考运动矢量编码模式编码或者解码。使用用于编码和解码的动态的参考运动矢量编码模式的一个实施例接下来论述。
图6是示出按照本公开的一个实施例用于使用参考运动矢量编码视频流过程600的流程图。过程600可以在编码器,诸如编码器400中实现,并且可以例如作为可以由计算设备,诸如发送站102或者接收站106执行的软件程序实现。例如,软件程序可以包括机器可读的指令,其可以存储在存储器,诸如存储器204或者214中,并且可以由处理器,诸如CPU 202执行,以使得计算设备执行过程600。
过程600可以使用专用的硬件或者固件实现。一些计算设备可以具有多个存储器、多个处理器或者两者。过程600的步骤或者操作可以使用不同的处理器、存储器或者两者分布。除了具有可以每个在列举的步骤的一些或者所有的实现中使用的多个处理器或者多个存储器的设备之外,术语“处理器”或者“存储器”以单个的使用包含具有一个处理器或者一个存储器的计算设备。为解释的简单起见,过程600被作为一系列的步骤或者操作描绘和描述。但是,按照本公开的教导可以以各种各样的顺序和/或同时发生。另外,按照本公开的步骤可以以在此处不存在和描述的其它的步骤发生。此外,可以不需要实现按照本公开的主题方法的所有图示的步骤或者操作。
过程600假设具有多个帧的视频数据的流(每个具有多个块)正在使用视频编码器,诸如在计算设备,诸如发送站102处执行的编码器400编码。视频数据或者流可以由计算设备以许多的方法接收,诸如通过经网络、经电缆接收视频数据,或者通过从主存储器或者其它的存储设备读取视频数据,包括磁盘驱动器或者可移除介质,诸如紧凑的闪存(CF)卡、安全数字(SD)卡,或者能够交换视频数据的任何其它的设备。在一些实施例中,视频数据可以从连接到操作编码器的计算设备的摄像机接收。在帧内的至少一些块被使用如以下更详细地描述的帧间预测编码。
在602处,过程600从在视频流中先前编码块中识别候选运动矢量。过程600分析先前编码块的运动行为以生成排名的候选运动矢量的列表,采用有效参考运动矢量排名系统,并且提供动态的运动参考模式,其充分地考虑可用的运动矢量候选列表,其允许参考运动矢量模式的数目动态地扩展或者缩短,并且改善熵编码的效率。候选运动矢量的池可以按照相邻参考块条件动态地,即,如何生成候选运动矢量列表而扩展或者缩短。在视频流中先前编码块可以包括在当前块之前使用帧间预测编码的任何块,诸如来自先前编码的帧的块,或者来自与当前块相同的帧的在当前块之前已经编码的块。例如,在一些编码/解码(编解码器)方案,诸如以光栅扫描顺序编码的一个中,先前编码块可以在相同的帧中包括当前块的上面、左侧,或者左上块。先前编码块还可以例如包括来自紧接先前帧(即,最后的帧)的块、来自黄金帧(在帧内/帧间预测级402处描述的)的块、来自任何其它的参考帧的块,或者其任意组合。但是,希望地,候选运动矢量是基于在某些方面对应于当前块的先前编码块由于其像素接近于当前块很可能具有与当前块类似的运动特征的理论,从这样的块中获得的。
块可以从单个参考帧或者从诸如两个参考帧的复合预测。对于具有单个参考帧的块,过程600从与参考帧相关联的最靠近的空间相邻块识别候选运动矢量。候选运动矢量可以包括在参考覆盖范围内的运动矢量参考块,诸如来自在当前块之上的边缘区域(例如,块)的运动矢量、来自在当前块左侧的边缘区域(例如,块)的运动矢量、来自当前块的右上角落的运动矢量,和来自在先前帧中的并置块的运动矢量。在某些实施例中,考虑与并置块的下面和右侧的块相关联的运动矢量。
构成参考运动矢量候选列表的初始步骤参考图7描述。也就是说,图7是用于解释在图6的过程600内的候选运动矢量的识别602的帧序列的图。正在编码的当前块B被设置在当前帧N内。帧N-1是先前帧,也称作时间相邻帧,其可以是可用于编码帧N的块的、存储在所谓的最后参考帧缓存器中的重建的帧。在这种情况下,块R3是与当前块B的并置块,并且其位于相同的像素位置(通常地,从左上方像素测量),并且在帧N-1内的x和y平面(即,相同的像素坐标)具有与在帧N内当前块B具有的相同的像素维度。换言之,块R3空间地对应于当前块B。在单个参考模式中,即,当前块B正在使用单个参考帧帧间预测,运动矢量候选缓存器与参考帧相关联。给定参考帧索引,可以通过在图7中示出的参考块执行对与相同的参考帧相关联的运动矢量的搜索,以包括在候选列表中。
块B和R3是任意块大小。例如,块B和R3可以每个是32x32像素。如上所述,每个帧可以被分割为用于编码的块。这些块可以为了编码目的被进一步分割为更小的块。由于这个缘故,接近于当前块B的任何块或者区域可能已经分割为由不同的运动矢量预测的更小的块。因此,考虑这一点,搜索运动矢量可以通过评价用于在帧内最小的可能的预测块大小的运动信息。在示出的示例中,在当前帧中搜索运动矢量使用来自顶行边缘区域(也称作块R0)、左列边缘区域(也称作块R1),和右上角(也称作块R2)的运动信息进行。块R0和R1是其大小(维度)与当前块B的大小相关联的区域。有时候,块R0和R1是与当前块B相同的大小,但是,它们可以是大小为当前块B的一半,或者以其他方式与当前块B的大小相关。在任何情况下,例如,在块R0和R1内具有最小的预测块大小像素的每个子块可以为了候选运动矢量而被扫描通过。例如,最小的预测块大小可以是8x8或者4x4。块R2希望地是最小的预测块大小以最小化搜索,并且因为更远的块很可能提供更不相关的信息。如果块R2是最小的预测块大小,块R2将仅仅具有一个运动矢量(或者在合并预测中两个)。在一个实施例中,块R2可以在大小方面是较大的。
在最后的帧中搜索运动矢量是使用来自并置块R3,和相邻于底端行(块R6、R7)、最右列(R4),或者两者(R5)的附加的参考块R4、R5、R6和R7的运动信息进行的。也就是说,它们每个紧邻于(例如,与其接触)的并置块的角部。如提及的,并置块R3具有与当前块相同的大小。在并置块R3内具有最小的预测块大小的每个子块可以被扫描或者搜索候选运动矢量。在示出的示例中,不考虑当前块B的大小,附加的参考块R4、R5、R6和R7分别地具有最小的预测块大小,但是这不是需要的。
现在返回到图6,一旦在602处获得参考运动矢量,它们可以在604处被按照距相应参考块的距离和其与当前块的重叠长度排名。换言之,过程600可以对于每个候选运动矢量确定在当前块和与候选运动矢量相关联的先前编码块之间的距离。来自到当前块的最靠近的行和列边缘和右上角落的运动矢量与当前块接触,并且可以被认为是更加相关的,从而排名高于那些远离的。距离可用于将运动矢量分组为类别。例如,并且参考图7,如果有的话,来自参考块R0和R1的子块的任何运动矢量和来自参考块R2的运动矢量可以被认为是类别1候选运动矢量,而来自块R3至R7和来自参考块R0和R1的任何其它的子块的剩余的候选运动矢量被认为是类别2候选运动矢量。在这种情况下,类别1候选运动矢量将采用比类别2候选运动矢量更高的优先级。距离可以另外或者做为选择包括计算在参考块和/或参考块的子块中的每个与当前块的中心之间的直线距离。在参考块和当前块之间的距离可以基于以像素为单位测量的、在先前编码块中的像素和在当前块中的并置像素之间的空间位移。在后面这些示例中,甚至当考虑流行性值时,并置块可以排名为比在当前帧中的参考块更高(例如,因为差值/位移是零)。基于距离分组和/或排名运动矢量的其它的方法是可能的。
当运动矢量通过类别分组时,在每个类别内,运动矢量可以按照在搜索区域(例如,至少一些参考块的先前编码的像素)内使用每个运动矢量像素的数目排名。例如,过程600可以在606处基于与特定的候选运动矢量相关联的先前编码的像素值确定流行性值。与候选运动矢量相关联的先前编码的像素值的数目越大,候选运动矢量的流行性值越高。流行性值可以是像素的原始数目(raw number),或者例如在全部或者一些参考块内的像素总数的百分比。
这可以参考图7的示例描述,假设每个包括32x32像素的当前块B和并置块R3,参考块R0和参考块R1分别地包括32x16和16x32像素,并且参考块R2和R4-R7每个包括8x8像素,其也对应于最小的预测块大小。在这种情况下,可能存在高达九个与参考帧相关联并且分配给类别1的运动矢量候选:来自相邻于当前块B的参考块R0和R1的8x8子块的各四个,以及来自8x8参考块R2的一个。可能存在高达二十八个与参考帧相关联并且分配给类别2的运动矢量:来自参考块R0和R1的剩余的8x8子块的各四个、来自并置块R3的十六个、和来自附加的四个8x8参考块R4-R7的各一个。在现实中,运动矢量通常被重新使用。在所有识别的那些候选运动矢量中,在类别内的特殊运动矢量中的每个被流行性值表征,该流行性值与使用该运动矢量的8x8像素(也就是说,64个像素)的组中的每个对应。在评价在602处识别的运动矢量是否是特殊的时,运动矢量不必与另一个相同。可以使用范围以便提供论证足够变化有用的运动矢量候选列表。也就是说,如果与已经在类别中的运动矢量候选的变化不足够,诸如,变化10%,或者某些其它变量,运动矢量可以在类别内省略。在这个实施例中,运动矢量通过类别排名,然后在该类别内排名,但是这不是需要的。运动矢量候选可以基于流行性值被分组在一起用于排名。
参考运动矢量候选列表可以对于与先前编码块或者子块相关联的每个特殊参考帧如描述地构成。例如,三个参考帧可对于如上所述的每个帧——最后的帧、替换参考帧,和黄金参考帧可用。在这种情况下,单独的参考运动矢量候选列表可以使用具有指向最后的帧、替换参考帧和黄金参考帧中的每个的运动矢量的先前编码块或者子块构成。对于每个帧更新最后的帧,并且替换参考帧和黄金参考帧可以较不频繁地更新。
在某些实施例中,当构成参考运动矢量候选列表时,执行运动矢量缩放。运动矢量缩放可以在606处作为流行性值确定的一部分进行,或者可以在过程600中的其它的点上进行。运动矢量缩放调整运动矢量的幅值以考虑在视频流内的帧序列内,相对于所考虑的帧,在参考帧之间的时间差。例如,并且再次参考图7,参考块R2使用最后的帧——其是帧N-1——用于帧间预测,而参考块R4使用最后的帧——其是在帧N-1(或者帧N-2,未示出)之前的帧——用于帧间预测。在每个块R2和R4设置其中的帧(分别地,帧N和帧N-1)和相应的参考帧(分别地,帧N-1和帧N-2)之间的时间差是一个帧,因此,指示无缩放。相比之下,如果参考块R2和R4两者使用黄金参考帧,如果黄金参考帧是不变的,在帧N和黄金参考帧之间,和在帧N-1和黄金参考帧之间的时间差是不同的。候选运动矢量可以通过放大与较短的时间差相关联的运动矢量的幅值,或者缩小与较长的时间差相关联的运动矢量的幅值产生,使得运动矢量共享通用的基础。用于缩放的因子可以基于由时间差形成的比。
运动矢量缩放也可以在为所有参考帧准备仅一个参考运动矢量候选列表,而不是为每个参考帧准备单独的列表的实施例中使用。参考帧可以在视频序列中设置或者在当前帧之前或者之后。在某些实施例中,运动矢量缩放被省略。
迄今地,候选列表结构用于单个参考模式,这里一个参考帧(并且因此,典型地,与一个参考帧相关联的一个运动矢量)用于帧间预测。但是,有时候,可以从两个或更多个参考帧预测一个块,这里像素值是由相应的运动矢量产生的每个帧内来自预测块的像素值的组合。当考虑复合参考模式用于当前块的预测时,该列表通过首先寻找为其参考运动矢量共享相同的复合参考帧(即,相同的参考帧的组合)的相邻块构成。较高的优先级被分配给来自如考虑当前块一样共享参考帧的组合的相邻参考块的候选运动矢量。运动矢量也可以从最高的到最低的流行性值排名。如果产生的候选列表具有比限定数目更短的长度,诸如两个,该列表可以附加以如上所述识别和排名的单个参考帧的参考运动矢量的组合。例如,如果正在考虑使用最后的帧和替换参考帧的复合参考模式,参考最后的帧或者替换参考帧对参考块搜索运动矢量参考,其然后被基于流行性值如论述地排名。
再次参考图6,并且如以上解释的,在608处流行性值的确定包括使用流行性值排名运动矢量。其还可以包括基于该排名向帧间编码(或者帧间预测)模式分配运动矢量。最流行的运动矢量可以被选择用于包括新运动矢量的差分编码的帧间预测模式。这可以称为NEWMV模式。然后,按照该排名结果,剩余的运动矢量可以分配给其它的参考矢量运动模式。在某些实施例中,REFMV模式是动态参考运动矢量编码模式,其包括现有的运动矢量被重新使用的至少两个模式。在一个示例中,这两个帧间预测模式是NEARESTMV模式和NEARMV模式。在该排名中在分配给NEWMV模式的运动矢量之后的下一个运动矢量(即,具有第二高的流行性值的运动矢量)被分配给NEARESTMV模式,并且在其后的下一个运动矢量(即,具有第三高的流行性值的运动矢量)被分配给NEARMV模式。如果用于特定的参考帧的候选参考运动矢量列表比两个更长,参考运动矢量模式的数目可以扩展以适应在该列表中剩余的项目。另一个可用的帧间预测模式可以是ZEROMV模式,其指的是不存在运动。
在608处,帧间预测模式被选择用于当前块。这可以包括测试帧间预测模式的每个,并且选择导致当前块的最有效编码的帧间预测模式。例如,过程600可以是用于选择供要编码的当前块的帧间预测模式的率失真环的一部分。作为率失真环的一部分,用于当前块的帧间预测的实际运动矢量可以按照许多的运动搜索技术经由运动搜索确定。对于每个参考帧,参考运动矢量的一个用途可以包括基于实际运动矢量很可能接近于用于参考帧的高排名运动矢量的理由,使用分配给NEWMV模式,或者其它的识别的候选运动矢量的参考运动矢量作为用于运动搜索算法的开始参数。在复合预测模式中参考帧的组合可以使用来自候选列表的运动矢量,特别地,对于参考帧的每个具有最高排名的那些类似地搜索。
做为选择,运动搜索可以无需使用来自候选列表的运动矢量执行。无论是否在运动搜索中使用参考运动矢量,可以测试各种各样的帧间预测模式。在一个实施例中,穷举的运动搜索使用单个或者复合模式(即,使用三个参考帧和参考帧的组合中的每个)尝试可用的帧间预测模式的每个。对于每个提出的运动矢量和对于每个测试帧间预测模式,计算使用帧间预测模式编码当前块的位成本(也称作速率)和在原始值和重建的值(也称作失真)之间的像素值中产生的误差,位成本包括信令通知帧间预测模式、参考帧、从当前块产生的残差块需要的位,以及如果需要的话,一个或多个运动矢量或者运动矢量差分。导致最低的率失真值(也称作比)的帧间预测模式和参考帧可以在608处被选择为用于当前块的帧间预测模式。
穷举搜索不需要执行。各种各样的技术可用于减小计算的负担。例如,用于在该帧中相邻块的帧间预测模式可以被首先测试,然后仅仅某些帧间预测模式可以被测试以看看是否导致改善的率失真比。此外,运动搜索可适用于帧间预测。率失真环可以包括对于各种各样帧内预测模式的测试,或者单独的率失真环可用于从可用的帧内预测模式中选择最有效帧内预测模式。然后,最有效帧间预测模式和最有效帧内预测模式被比较以选择用于该块的预测模式。
在这里假设在608处选择的帧间预测模式比可用的帧内预测模式更好,在610处使用帧间预测模式编码当前块。例如,如果NEWMV模式用于编码当前块,预测的块使用来自运动搜索的实际运动矢量和选择的参考帧产生。然后,在当前块和预测的块之间的残差如参考图4描述地产生和编码。通过该排名分配给NEWMV模式的运动矢量可用于差分地编码实际运动矢量。例如,差值或者残差可以通过从用于编码该当前块的运动矢量减去参考运动矢量计算。该差值可以被编码和包括在视频流中。此外,表示参考帧和使用的NEWMV模式的位可以在块头部和/或在帧或者片头中表示。
在具有单个参考帧的另一个示例中,在运动矢量中的运动搜索结果等于或者在有关分配给参考运动矢量模式的参考运动矢量的一个的值范围内。在这种情况下,指示REFMV帧间预测模式。在这个示例中,如果由搜索产生的运动矢量等于或者在有关分配给NEARMV模式的参考运动矢量的值范围内,预测的块被使用分配给NEARMV模式的参考运动矢量和选择的参考帧产生。然后,在当前块和预测的块之间的残差被如参考图4描述的产生和编码。此外,表示参考帧和REFMV模式,并且特别地NEARMV模式被使用的位可以在块头部和/或在帧或者片头中表示。
如果在608处选择了,剩余的帧间预测模式可以类似地用于编码当前块,或者编码在视频序列内帧的其它的块。图6的过程600可以根据需要重复。
如相对于图4的编码器400的操作提及的,编码当前块可以包括熵编码。熵编码帧间预测模式可以被修改以考虑新的动态的参考运动矢量模式。采用对应于新的运动矢量、零运动矢量和动态的参考运动矢量模式的三个帧间预测模式,在这个示例中,分别地NEWMV模式、ZEROMV模式和REFMV模式,熵编码从NEWMV模式开始。也就是说,假设当前块被使用NEWMV模式编码,概率模型可以按照两个场境选择:1)找到多少参考运动矢量;和2)如果找到具有匹配的参考帧的相邻块,它们可能将如何以NEWMV模式编码。
如果下一个编码模式不是NEWMV模式,如果下一个编码模式是ZEROMV模式,编码继续。在这种情况下,概率模型可以按照两个场境选择:1)如果在最后的(或者先前的)帧中的并置块使用零运动矢量,或者接近于零运动矢量(即,在两个行和列分量中小于一个全像素);和2)是否(和可能地多少)在当前帧内的空间相邻块使用零运动矢量,或者接近于零运动矢量。
如果代替地,下一个编码模式不是ZEROMV模式(即,是由REFMV模式表示的动态的参考运动矢量模式),如以上的讨论地在参考运动矢量之间进行判定。相关的场境是多少参考运动矢量被检查进候选列表,并且当可用时,其加权系数被在复合预测中使用。
图8是按照本公开的实施例用于使用参考运动矢量解码编码的视频流过程800的流程图。过程800可以例如作为可以由计算设备,诸如发送站102或者接收站106执行的软件程序实现。例如,软件程序可以包括机器可读的指令,其可以存储在存储器,诸如存储器204或者214中,并且当由处理器,诸如CPU 202执行时,可以使得计算设备执行过程800。过程800可以使用专用的硬件或者固件实现。如以上解释的,某些计算设备可以具有多个存储器或者处理器,并且在过程800中描述的操作可以使用多个处理器、存储器或者两者分布。
为解释的简单起见,过程800被作为一系列的步骤或者操作描绘和描述。但是,按照本公开的步骤或操作可以以各种各样的顺序和/或同时发生。另外,可以使用不存在和在此处描述的其它的步骤或者操作。此外,可以不需要实现按照本公开的主题方法的所有图示的步骤或者操作。
在802处,解码器确定使用单个预测还是复合预测编码当前块。这个信息可以通过读取和解码来自编码的视频位流的、指示一个或多个运动矢量被用于编码当前块的位通信。编码的位流(或者编码的视频数据)可以由计算设备的解码器以许多的方法接收,诸如,通过经网络、经电缆接收视频数据,或者通过从主存储器或者其它的存储设备读取视频数据,包括磁盘驱动器或者可移除介质,诸如DVD、紧凑的闪存(CF)卡、安全数字(SD)卡,或者能够交换视频流的任何其它的设备。这个信息例如可以包括在与当前块相关联的头部,或者帧头部中。这个解释假设当前块是帧间预测。否则,参考帧没有编码到与当前块结合的位流,并且当前块被帧内预测。
已知参考帧,候选运动矢量可以以如参考图6的过程600描述的类似的方式排名。也就是说,编码器和解码器可以共享关于参考运动矢量候选列表的产生的规则,使得接收与哪个帧间预测模式用于编码当前块(例如,NEWMV、NEARESTMV、NEARMV等等)相关的头部信息的解码器能够识别由编码器使用的相同的参考运动矢量。首先,候选运动矢量可以在804处,以与它们在过程600中在602处识别类似的方式从先前编码块识别。虽然过程600可以使用所有可用的参考帧和参考帧组合识别用于排名的候选运动矢量,以便选择帧间预测模式,该过程800只须排名那些用于实际地编码该块的参考帧的候选运动矢量。
在804处识别候选运动矢量之后,它们在806和808处被排名。更具体地说,排名候选运动矢量包括在806处对于每个候选运动矢量确定在作为运动矢量来源的先前编码块和当前块之间的距离。这涉及与相对于如上所述的在过程600中在604处的确定相同的操作。这个操作的结果是在一个实施例中由距离分组的候选运动矢量列表。然后,在804处从先前编码块确定用于候选运动矢量的相应的流行性值被与在过程600中在606处的确定相同执行。这个操作的结果是用于在当前块的预测中使用的单个参考帧或者组合的参考帧的候选运动矢量的排名的列表。在一个实施例中,最高排名的(例如,最可能的)运动矢量被分配给NEWMV模式,并且在该排名中的接下来的两个运动矢量被分别地分配给动态参考运动矢量(REFMV)模式的NEARESTMV和NEARMV参考运动矢量模式。更进一步参考运动矢量此后被依次分配。
在810处,识别用于编码当前块的帧间预测模式。在一个实施例中,帧间预测模式通过解码包括在识别帧间预测模式的位流内的位识别。例如,帧间预测模式可以是新的运动矢量模式、零运动矢量模式,或者动态的参考运动矢量模式。如果帧间预测模式是动态参考运动矢量模式,使用的特定的参考运动矢量模式可以例如,从在该位流中包括在头部内的位类似地确定。
在812处,在810处识别的帧间预测模式用于在812处解码当前块,诸如经由参考图5描述的解码过程。当帧间预测模式涉及差分地编码的运动矢量时,例如,参考运动矢量可用于解码用于预测该当前块的运动矢量。做为选择,帧间预测模式可以通过参考该列表指示运动矢量。不考虑一个或多个运动矢量的来源,预测块被使用运动矢量产生,并且被添加到用于从位流解码的当前块的残差。
过程800可以被对于使用帧间预测编码的每个块重复以产生重建的块。使用重建的块和使用帧内预测重建的那些来重建该帧。通过解码多个帧,输出视频流,诸如在图5中示出的输出视频流516可以被重建。
在用于REFMV模式的位流内语法的使用建议有效的运动矢量来自于参考相邻块的编码信息。给定参考帧,这样的可能的参考运动矢量候选的列表被按照其与当前块的相对距离及其相对用途排名。这个技术推广REFMV模式(例如,NEARESTMV和NEARMV),并且改善熵编码的效率。此外,附加的运动矢量候选可能导致进一步压缩增益。
如上所述的编码和解码的方面图示某些编码和解码技术。但是,应该理解,如在权利要求中使用的那些术语的编码和解码可以指的是压缩、解压缩、变换,或者数据的任何其它的处理或者变化。
在此处使用的措词“示例”、“方面”或者“实施例”指的是起示例、例子或者图例的作用。在此处描述的作为使用这些措词的一个或多个的任何方面或者设计不必然地认为是对其它的方面或者设计优选的或者有益的。更合适地,措词“示例”、“方面”、或者“实施例”的使用意欲以具体的方式呈现概念。如在本申请中使用的,术语“或者”意欲指的是相容的“或者”,而不是排它的“或者”。也就是说,除非另外指定的,或者从场境中清楚的,“X包括A或者B”意欲指的是任何自然相容的置换。也就是说,如果X包括A,X包括B,或者X包括A和B两者,那么,“X包括A或者B”在先前的例子的任何一个之下满足。此外,如在本申请和所附的权利要求中使用的冠词“一”和“一个”除非另外指定,将通常解释为指的是“一个或多个”,或者从场境中清楚的是直接为单个形式。另外,术语“一个实施例”或者“一个执行过程”的使用自始至终不意欲指的是相同的实施例、方面或者执行过程,除非照此描述的。
发送站102和/或接收站106的实施例(并且存储在其上的算法、方法、指令等等,和/或从而包括由编码器400和解码器500执行的)可以以硬件、软件或者其任何组合实现。该硬件例如可以包括计算机、知识产权(IP)核心、专用集成电路(ASIC)、可编程逻辑阵列、光学处理器、可编程序逻辑控制器、微码、微控制器、服务器、微处理器、数字信号处理器,或者任何其它适宜的电路。在权利要求中,该术语“处理器”应该理解为包含任何先前的硬件,或者单独地或者以其组合。术语“信号”和“数据”可互换地使用。此外,发送站102和接收站106的一部分不必然地以相同的方式实现。
此外,在一个方面中,例如,发送站102或者接收站106可以使用具有计算机程序的通用计算机或者通用的处理器实现,当执行时,该计算机程序执行在此处描述的任何相应的方法、算法和/或指令。此外,或者做为选择,例如专用计算机/处理器可以使用,其可以包含用于执行在此处描述的任何方法、算法或者指令的其它的硬件。
发送站102和接收站106例如可以在视频会议系统中在计算机上实现。做为选择,发送站102可以在服务器上实现,并且接收站106可以在与服务器分离的设备,诸如手持通信设备上实现。在这种情况下,发送站102可以使用编码器400将内容编码为编码的视频信号,并且将编码的视频信号发送给通信设备。随后,通信设备然后可以使用解码器500解码编码的视频信号。做为选择,通信设备可以解码在通信设备上本地存储的内容,例如,未由发送站102发送的内容。其它的发送站102和接收站106实施方案是可用的。例如,接收站106可以是通常固定的个人计算机,而不是便携式通信设备,和/或包括编码器400的设备也可以包括解码器500。
此外,本公开的实施例的全部或者一部分可以采取例如从有形的计算机可使用的可访问的计算机程序产品或者计算机可读的介质的形式。计算机可使用的或者计算机可读的介质可以是例如可以可触摸的包含、存储、交换,或者传输供由或者与任何处理器结合使用的程序的任何设备。该介质例如可以是电子、磁性、光学、电磁或者半导体器件。其他适宜的介质也是可用的。
以上描述的实施例、执行过程和方面已经描述以便允许容易理解本公开,并且不限制本公开。相反地,本公开意欲覆盖包括在所附的权利要求的范围内的各种各样的修改和等效方案,其范围将赋予最宽的解释,以便包含如在法律之下允许的所有这样的修改和等效结构。

Claims (20)

1.一种用于解码视频流的方法,所述方法包括:
对于当前块识别用于编码在当前帧内的所述当前块的参考帧;
使用在所述视频流的至少一个帧内的多个参考块生成用于所述参考帧的参考运动矢量候选列表;
通过从所述当前块到提供运动矢量的参考块的距离,并通过该运动矢量的流行性值,排名在所述参考运动矢量候选列表内的每个运动矢量,运动矢量的流行性值指示该运动矢量被所述多个参考块中的至少一些使用的水平;
基于所述排名将所述参考运动矢量候选列表内的相应的运动矢量分配给多个帧间预测模式;
选择用于解码所述当前块的帧间预测模式;和
使用所选择的帧间预测模式解码所述当前块。
2.根据权利要求1的方法,其中,使用在所述参考运动矢量候选列表内的运动矢量的、在所述多个参考块中的所述至少一些内的先前编码的像素值的数目越大,该运动矢量的流行性值越高。
3.根据权利要求1的方法,其中,流行性值包括使用在所述参考运动矢量候选列表内的运动矢量的、在所述参考块内的先前编码的像素的原始数目。
4.根据权利要求1的方法,进一步包括:
确定所述当前块使用单个预测还是复合预测被编码;
响应于确定所述当前块被使用复合预测编码:
识别用于编码所述当前块的所述参考帧包括识别用于编码所述当前块的第一参考帧和第二参考帧;
生成用于所述参考帧的所述参考运动矢量候选列表包括使用所述多个参考块生成用于所述第一参考帧的第一参考运动矢量候选列表,和生成用于所述第二参考帧的第二参考运动矢量列表。
5.根据权利要求1的方法,其中,分配相应的运动矢量包括:
将在所述排名中具有最高流行性值的运动矢量分配给包括新运动矢量的差分编码的帧间预测模式。
6.根据权利要求5的方法,其中,分配相应的运动矢量包括:
将具有第二高的流行性值的运动矢量作为第一运动矢量分配给动态参考运动矢量帧间预测模式;和
将具有第三高的流行性值的运动矢量作为第二运动矢量分配给动态参考运动矢量帧间预测模式。
7.根据权利要求6的方法,其中,所述第一运动矢量被分配给NEARESTMV模式,并且所述第二运动矢量被分配给NEARMV模式。
8.根据权利要求1的方法,进一步包括:
对于在所述参考运动矢量候选列表内的每个运动矢量,确定从所述当前块到提供该运动矢量的参考块的距离,其中,排名每个运动矢量包括:
将来自所述多个参考块中的、在所述当前帧中的任何参考块的那些运动矢量分组为第一候选运动矢量类别;和
将任何剩余的运动矢量分组为第二候选运动矢量类别;和
在所述参考运动矢量候选列表中将所述第一候选运动矢量类别排名在所述第二候选运动矢量类别前面。
9.根据权利要求8的方法,其中,排名每个运动矢量包括:
在所述第一候选运动矢量类别内基于相应的流行性值排名;和
在所述第二候选运动矢量类别内基于相应的流行性值排名。
10.一种用于解码视频流的装置,包括:
处理器;和
存储指令的存储器,所述指令使得所述处理器执行操作,所述操作包括:
对于当前块识别用于编码在当前帧内的所述当前块的参考帧;
使用多个参考块生成用于所述参考帧的参考运动矢量候选列表,所述多个参考块包括所述当前帧的空间相邻块、在先前帧内的并置块,和在所述先前帧内的所述并置块的空间相邻块;
通过从所述当前块到提供运动矢量的参考块的距离,并通过该运动矢量的流行性值,排名在所述参考运动矢量候选列表内的每个运动矢量,运动矢量的流行性值指示该运动矢量被所述多个参考块使用的水平;
基于所述排名将所述参考运动矢量候选列表内的相应的运动矢量分配给多个帧间预测模式;
选择用于解码所述当前块的帧间预测模式;和
使用所选择的帧间预测模式解码所述当前块。
11.根据权利要求10的装置,其中,解码所述当前块包括使用分配给所选择的帧间预测模式的运动矢量帧间预测所述当前块来解码所述当前块。
12.根据权利要求10的装置,其中,流行性值包括使用在所述参考运动矢量候选列表内的运动矢量的、在所述参考块内的先前编码的像素的总数的百分比。
13.根据权利要求10的装置,其中,所述参考帧是至少两个可用参考帧中的第一参考帧,并且对所述参考帧生成参考运动矢量候选列表包括对所述至少两个可用参考帧生成单个运动矢量候选列表。
14.根据权利要求13的装置,其中,所述操作进一步包括:
确定在所述当前帧和所述第一参考帧之间的第一时间差;
确定在所述当前帧和所述至少两个可用参考帧中的第二参考帧之间的第二时间差;
在所述参考运动矢量候选列表中包括与所述第一参考帧相关联的第一运动矢量;
响应于所述第一时间差比所述第二时间差长,为了包括在所述参考运动矢量候选列表中而放大与所述第二参考帧相关联的第二运动矢量的幅值;和
响应于所述第一时间差比所述第二时间差短,为了包括在所述参考运动矢量候选列表中而缩小与所述第二参考帧相关联的第二运动矢量的幅值。
15.根据权利要求10的装置,其中,所述多个参考块包括所述当前帧的空间相邻块、在先前帧内的并置块,和在所述先前帧内的所述并置块的空间相邻块。
16.根据权利要求15的设备,其中,在所述先前帧内的所述并置块的所述空间相邻块中的每个具有最小可用预测块大小,并且与所述并置块的相应的角部接触。
17.根据权利要求10的装置,其中,所述操作进一步包括计算所述参考运动矢量候选列表内的每个运动矢量的流行性值。
18.根据权利要求10的装置,其中,生成所述参考运动矢量候选列表的指令包括:
对于所述参考帧的参考帧索引,搜索用于帧间预测所述多个参考块的运动矢量;和
在参考运动矢量候选列表中包括具有所述参考帧索引的、用于帧间预测所述多个参考块的任何运动矢量。
19.一种用于编码视频流的方法,所述方法包括:
对于多个参考帧中的每个,识别用于使用多个参考块编码在当前帧内的当前块的候选运动矢量,所述多个参考块包括所述当前帧的空间相邻块、在先前帧内的并置块,和在所述先前帧内的所述并置块的空间相邻块;
通过提供相应的候选运动矢量的相应参考块距当前块的距离,并且通过该相应的候选运动矢量的流行性值,排名在用于参考帧的参考运动矢量候选列表内的候选运动矢量,该相应的候选运动矢量的流行性值指示该相应的候选运动矢量被所述多个参考块使用的水平;
基于所述排名将所述参考运动矢量候选列表内的相应的候选运动矢量分配给多个帧间预测模式;
选择用于编码所述当前块的帧间预测模式;和
使用所选择的帧间预测模式编码所述当前块。
20.根据权利要求19的方法,其中,使用所选择的帧间预测模式编码所述当前块包括:
使用分配给所选择的帧间预测模式的候选运动矢量差分地编码用于帧间预测所述当前块的运动矢量;或者
在与所述当前块相关联的位流内包括至少一位,所述至少一位指示所述当前块使用分配给所选择的帧间预测模式的候选运动矢量被编码。
CN201611226103.5A 2016-01-29 2016-12-27 动态参考运动矢量编码模式 Active CN107027038B (zh)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201662288553P 2016-01-29 2016-01-29
US62/288,553 2016-01-29
US15/131,079 2016-04-18
US15/131,079 US10397600B1 (en) 2016-01-29 2016-04-18 Dynamic reference motion vector coding mode
US201662330491P 2016-05-02 2016-05-02
US62/330,491 2016-05-02
US15/373,518 US10462457B2 (en) 2016-01-29 2016-12-09 Dynamic reference motion vector coding mode
US15/373,518 2016-12-09

Publications (2)

Publication Number Publication Date
CN107027038A true CN107027038A (zh) 2017-08-08
CN107027038B CN107027038B (zh) 2020-01-10

Family

ID=59398647

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611226103.5A Active CN107027038B (zh) 2016-01-29 2016-12-27 动态参考运动矢量编码模式

Country Status (2)

Country Link
CN (1) CN107027038B (zh)
WO (1) WO2017131908A1 (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110572672A (zh) * 2019-09-27 2019-12-13 腾讯科技(深圳)有限公司 视频编解码方法和装置、存储介质及电子装置
CN110572674A (zh) * 2019-09-27 2019-12-13 腾讯科技(深圳)有限公司 视频编解码方法和装置、存储介质及电子装置
CN110662075A (zh) * 2018-06-29 2020-01-07 北京字节跳动网络技术有限公司 改进的时域运动矢量预测推导
CN110896485A (zh) * 2018-09-13 2020-03-20 华为技术有限公司 一种预测运动信息的解码方法及装置
WO2020143292A1 (zh) * 2019-01-09 2020-07-16 华为技术有限公司 一种帧间预测方法及装置
CN111869215A (zh) * 2018-05-31 2020-10-30 华为技术有限公司 受限长距离运动矢量预测方法及装置
CN111953997A (zh) * 2019-05-15 2020-11-17 华为技术有限公司 候选运动矢量列表获取方法、装置及编解码器
WO2021047631A1 (en) * 2019-09-13 2021-03-18 Beijing Bytedance Network Technology Co., Ltd. Derivation of collocated motion vectors
CN112534822A (zh) * 2018-08-31 2021-03-19 胡露有限责任公司 利用重置列表的历史运动矢量预测
CN112640451A (zh) * 2018-09-12 2021-04-09 高通股份有限公司 矢量预测器列表生成
CN113170108A (zh) * 2018-11-27 2021-07-23 Op方案有限责任公司 使用显式和隐式信令对不可用参考帧进行自适应块更新
CN113382249A (zh) * 2021-04-21 2021-09-10 浙江大华技术股份有限公司 图像/视频编码方法、装置、系统及计算机可读存储介质
CN113453015A (zh) * 2019-01-03 2021-09-28 深圳市大疆创新科技有限公司 视频处理方法和装置
CN114205621A (zh) * 2018-02-28 2022-03-18 三星电子株式会社 编码方法及其装置以及解码方法及其装置
WO2023173809A1 (zh) * 2022-03-16 2023-09-21 腾讯科技(深圳)有限公司 视频编解码方法、装置、存储介质、电子设备及计算机程序产品

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10412383B2 (en) * 2017-08-15 2019-09-10 Google Llc Compressing groups of video frames using reversed ordering
US10812810B2 (en) * 2018-02-06 2020-10-20 Tencent America LLC Method and apparatus for video coding in merge mode
EP3833028B1 (en) * 2019-12-03 2022-02-09 Axis AB Method and system for calculating a cost of encoding a motion vector
WO2023287418A1 (en) * 2021-07-15 2023-01-19 Google Llc Reference motion vector candidate bank

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011095259A1 (en) * 2010-02-05 2011-08-11 Telefonaktiebolaget L M Ericsson (Publ) Selecting predicted motion vector candidates
US20130208795A1 (en) * 2012-02-09 2013-08-15 Google Inc. Encoding motion vectors for video compression
US20140133570A1 (en) * 2011-06-27 2014-05-15 Samsung Electronics Co., Ltd. Method and apparatus for encoding motion information, and method and apparatus for decoding same

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9510009B2 (en) * 2010-05-20 2016-11-29 Thomson Licensing Methods and apparatus for adaptive motion vector candidate ordering for video encoding and decoding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011095259A1 (en) * 2010-02-05 2011-08-11 Telefonaktiebolaget L M Ericsson (Publ) Selecting predicted motion vector candidates
US20140133570A1 (en) * 2011-06-27 2014-05-15 Samsung Electronics Co., Ltd. Method and apparatus for encoding motion information, and method and apparatus for decoding same
US20130208795A1 (en) * 2012-02-09 2013-08-15 Google Inc. Encoding motion vectors for video compression

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114205621A (zh) * 2018-02-28 2022-03-18 三星电子株式会社 编码方法及其装置以及解码方法及其装置
CN111869215B (zh) * 2018-05-31 2023-06-06 华为技术有限公司 受限长距离运动矢量预测方法及装置
CN111869215A (zh) * 2018-05-31 2020-10-30 华为技术有限公司 受限长距离运动矢量预测方法及装置
CN110662075A (zh) * 2018-06-29 2020-01-07 北京字节跳动网络技术有限公司 改进的时域运动矢量预测推导
US11470304B2 (en) 2018-06-29 2022-10-11 Beijing Bytedance Network Technology Co., Ltd. Virtual merge candidates
US11627308B2 (en) 2018-06-29 2023-04-11 Beijing Bytedance Network Technology Co., Ltd. TMVP derivation
CN112534822A (zh) * 2018-08-31 2021-03-19 胡露有限责任公司 利用重置列表的历史运动矢量预测
CN112640451A (zh) * 2018-09-12 2021-04-09 高通股份有限公司 矢量预测器列表生成
CN110896485A (zh) * 2018-09-13 2020-03-20 华为技术有限公司 一种预测运动信息的解码方法及装置
CN110896485B (zh) * 2018-09-13 2021-10-15 华为技术有限公司 一种预测运动信息的解码方法及装置
CN113170108A (zh) * 2018-11-27 2021-07-23 Op方案有限责任公司 使用显式和隐式信令对不可用参考帧进行自适应块更新
CN113453015B (zh) * 2019-01-03 2022-10-25 深圳市大疆创新科技有限公司 视频处理方法和装置
CN113453015A (zh) * 2019-01-03 2021-09-28 深圳市大疆创新科技有限公司 视频处理方法和装置
WO2020143292A1 (zh) * 2019-01-09 2020-07-16 华为技术有限公司 一种帧间预测方法及装置
CN111953997A (zh) * 2019-05-15 2020-11-17 华为技术有限公司 候选运动矢量列表获取方法、装置及编解码器
WO2021047631A1 (en) * 2019-09-13 2021-03-18 Beijing Bytedance Network Technology Co., Ltd. Derivation of collocated motion vectors
US11595658B2 (en) 2019-09-13 2023-02-28 Beijing Bytedance Network Technology Co., Ltd. Derivation of collocated motion vectors
CN110572672A (zh) * 2019-09-27 2019-12-13 腾讯科技(深圳)有限公司 视频编解码方法和装置、存储介质及电子装置
CN110572674A (zh) * 2019-09-27 2019-12-13 腾讯科技(深圳)有限公司 视频编解码方法和装置、存储介质及电子装置
CN110572672B (zh) * 2019-09-27 2024-03-15 腾讯科技(深圳)有限公司 视频编解码方法和装置、存储介质及电子装置
CN110572674B (zh) * 2019-09-27 2024-03-15 腾讯科技(深圳)有限公司 视频编解码方法和装置、存储介质及电子装置
CN113382249B (zh) * 2021-04-21 2022-09-06 浙江大华技术股份有限公司 图像/视频编码方法、装置、系统及计算机可读存储介质
CN113382249A (zh) * 2021-04-21 2021-09-10 浙江大华技术股份有限公司 图像/视频编码方法、装置、系统及计算机可读存储介质
WO2023173809A1 (zh) * 2022-03-16 2023-09-21 腾讯科技(深圳)有限公司 视频编解码方法、装置、存储介质、电子设备及计算机程序产品

Also Published As

Publication number Publication date
WO2017131908A1 (en) 2017-08-03
CN107027038B (zh) 2020-01-10

Similar Documents

Publication Publication Date Title
CN107027038A (zh) 动态参考运动矢量编码模式
CN107925758B (zh) 视频编译系统中的帧间预测方法和设备
CN101112103B (zh) 有效地预测基于多层的视频帧的方法、及使用该方法的视频编码方法和设备
US20190327484A1 (en) Video coding using reference motion vectors
CN104885471B (zh) 用于下一代视频的编码/未编码的数据的内容自适应熵编码
CN111757106B (zh) 使用多级复合预测对视频流中的当前块编译的方法和设备
CN111656401A (zh) 通过使用基于学习的运动分段的运动翘曲的视频压缩
CN110268715A (zh) 变换核选择与熵编译
CN111801945A (zh) 具有基于边信息的视频编译的混合运动补偿神经网络
CN107347159A (zh) 使用动态参考运动矢量进行的运动矢量编码
CN107454403A (zh) 块尺寸可调整的方向性帧内预测
CN110073663A (zh) 使用级别图的变换系数代码化
US10506240B2 (en) Smart reordering in recursive block partitioning for advanced intra prediction in video coding
CN103004210A (zh) 用于视频编码的低复杂度帧内预测
CN106170092A (zh) 用于无损编码的快速编码方法
CN107027032A (zh) 最后帧运动向量分区
CN104704826B (zh) 两步量化和编码方法和装置
CN107205149A (zh) 通过参考帧缓冲器跟踪的运动矢量参考选择
CN101385346A (zh) 处理视频数据亮度变化的局部加权预测
CN104718758A (zh) 变换域帧内预测
CN107205156B (zh) 通过缩放的运动矢量预测
CN107071440A (zh) 使用先前帧残差的运动矢量预测
CN110741641B (zh) 用于视频压缩的方法和装置
CN107318015A (zh) 用于视频编码的混合预测模式
CN102484701A (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
CB02 Change of applicant information

Address after: American California

Applicant after: Google limited liability company

Address before: American California

Applicant before: Google Inc.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant