CN107205149A - 通过参考帧缓冲器跟踪的运动矢量参考选择 - Google Patents

通过参考帧缓冲器跟踪的运动矢量参考选择 Download PDF

Info

Publication number
CN107205149A
CN107205149A CN201611224939.1A CN201611224939A CN107205149A CN 107205149 A CN107205149 A CN 107205149A CN 201611224939 A CN201611224939 A CN 201611224939A CN 107205149 A CN107205149 A CN 107205149A
Authority
CN
China
Prior art keywords
frame
motion vector
reference frame
identifier
buffer index
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
CN201611224939.1A
Other languages
English (en)
Other versions
CN107205149B (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
Application filed by Google LLC filed Critical Google LLC
Publication of CN107205149A publication Critical patent/CN107205149A/zh
Application granted granted Critical
Publication of CN107205149B publication Critical patent/CN107205149B/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/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/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • 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

Landscapes

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

Abstract

本发明公开了通过参考帧缓冲器跟踪的运动矢量参考选择。编码或解码视频信号包括确定用于当前块的多个候选运动矢量,该候选运动矢量包括用于预测第一帧内的同位块的第一运动矢量。可以将与第一运动矢量相关联的参考帧标识符与用于预测第二帧的当前块的参考帧的参考缓冲器索引作比较。在参考帧标识符与参考缓冲器索引相同的条件下,将第一运动矢量提前到多个候选运动矢量中的其余候选运动矢量之前。

Description

通过参考帧缓冲器跟踪的运动矢量参考选择
背景技术
数字视频流通常使用帧或静止图像序列来表示视频。每个帧可以包括许多块,其进而可以包含描述用于像素的颜色、亮度或其它属性的值的信息。典型视频流中的数据量是大的,并且视频的传输和存储可以使用相当多的计算或通信资源。由于在视频数据中涉及到的大量数据而导致需要高性能压缩以用于传输和存储。在基于块的编解码器中,这涉及到预测技术,包括使用运动矢量的预测。
发明内容
本公开一般地涉及使用计算设备对诸如视频流数据的视觉数据进行编码和解码,该视频流具有帧序列,每个帧具有块,并且每个块具有像素。本公开包括在对帧序列的第一帧编码之后,存储用于多个参考帧中的每一个的参考缓冲器索引和参考帧标识符,在存储之后通过更新与参考帧标识符相关联的参考帧来更新多个参考帧,在更新之后确定用于第二帧的当前块的多个候选运动矢量,多个候选运动矢量包括用于预测第一帧内的同位块的第一运动矢量,在更新之后执行在多个参考帧中的参考帧内的当前块的运动搜索以生成第二运动矢量,以及将与关联于第一运动矢量的参考帧的参考帧标识符一起存储的参考缓冲器索引与在执行中使用的参考帧的参考缓冲器索引作比较,在执行中使用的参考帧的参考缓冲器索引匹配与关联于第一运动矢量的参考帧的参考帧标识符一起存储的参考缓冲器索引的条件下,将第一运动矢量提前到用于编码当前块的多个候选运动矢量中的其余运动矢量之前。
本文公开的一个方面包括对视觉数据进行编码和解码,其中,第二帧在序列中的第一帧之后,多个参考帧中的一个包括在当前帧被编码之前的序列中的最后一个帧,并且具有最后一个帧标识符作为参考帧标识符,并且更新多个参考帧包括将与最后一个帧标识符相关联的参考缓冲器索引更新成第一参考帧的参考缓冲器索引。多个参考帧包括黄金帧和替代参考帧,并且更新多个参考帧包括仅更新与最后一个帧标识符相关联的参考缓冲器索引。多个参考帧包括具有黄金帧标识符作为参考帧标识符的黄金帧和具有替代参考帧标识符作为参考帧标识符的替代参考帧;以及下述中的至少一个:更新多个参考帧包括将与替代参考帧标识符相关联的参考缓冲器索引更新成新的替代参考帧的参考缓冲器索引;或者更新多个参考帧包括将与黄金帧标识符相关联的参考缓冲器索引更新成新的黄金帧的参考缓冲器索引。
本文公开的一个方面包括对视觉数据进行编码和解码,其中,更新多个参考帧包括在存储之后更新与相应参考帧标识符相关联的至少两个参考帧,多个候选运动矢量包括用于预测第一帧内的同位块的第三运动矢量,在更新之后执行在多个参考帧中的不同参考帧内的第二块执行第二运动搜索以生成第四运动矢量,将与关联于第三运动矢量的参考帧的参考帧标识符一起存储的参考缓冲器索引与在执行第二运动搜索中使用的参考帧的参考缓冲器索引作比较,将第一运动矢量提前到用于编码当前块的多个候选运动矢量中的其余运动矢量之前包括将第一运动矢量提前到用于编码第三运动矢量的多个候选运动矢量中的其余运动矢量之前,并且在执行第二运动搜索中使用的参考帧的参考缓冲器索引匹配与关联于第三运动矢量的参考帧的参考帧标识符一起存储的参考缓冲器索引的条件下,将第二运动矢量提前到用于编码第四运动矢量的多个候选运动矢量中的其余运动矢量之前。
本文中所述的装置的一个方面包括处理器和存储指令的非瞬时存储器,该指令使得处理器执行方法,该方法包括:在对帧序列的第一帧编码之后,存储用于多个参考帧中的每一个的参考缓冲器索引和参考帧标识符,在存储之后通过更新与参考帧标识符相关联的参考帧来更新多个参考帧,在更新之后确定用于第二帧的当前块的多个候选运动矢量,多个候选运动矢量包括用于预测第一帧内的同位块的第一运动矢量,在更新之后执行在多个参考帧中的参考帧内的当前块的运动搜索以生成第二运动矢量,以及将与关联于第一运动矢量的参考帧的参考帧标识符一起存储的参考缓冲器索引与在执行中使用的参考帧的参考缓冲器索引作比较,在执行中使用的参考帧的参考缓冲器索引匹配与关联于第一运动矢量的参考帧的参考帧标识符一起存储的参考缓冲器索引的条件下,将第一运动矢量提前到用于编码当前块的多个候选运动矢量中的其余运动矢量之前。
在以下详细描述、所附权利要求和附图中另外详细地描述了本公开的这些及其它方面。
附图说明
这里的描述对下面所述附图进行参考,在附图中相同的参考标记在多个图中指代相同部分。
图1是视频编码和解码系统的示意图。
图2是可以实现发射站和接收站的计算设备的示例的框图。
图3是要编码并随后解码的视频流的图。
图4是根据本文中教导的一方面的视频压缩系统的框图。
图5是根据本文教导的另一方面的视频压解压缩系统的框图。
图6是用于通过参考帧缓冲器跟踪来选择运动矢量参考的过程的流程图。
图7是用于解释图6的过程的参考缓冲器更新的一个示例的图。
具体实施方式
可以通过多种技术来压缩视频流以减少发射或存储视频流所需的带宽。视频流可以被编码成比特流,这可能涉及压缩,并且然后被发射到可以对比特流进行解码或解压缩以使其准备好用于观看或进一步处理的解码器。视频流的压缩通常利用通过空间和/或运动补偿预测进行的视频信号的空间和时间相关性。例如,帧间预测使用一个或多个运动矢量来生成块(也称为预测块),该块类似于要使用先前编码和解码的像素进行编码的当前块。通过对运动矢量以及两个块之间的差进行编码,接收编码的信号的解码器可以重新创建当前块。
用于生成预测块的每个运动矢量参考除当前帧之外的帧,即参考帧。参考帧可以在视频流序列中位于当前帧之前或之后。例如,用于对当前帧进行编码的一个公共参考帧是最后一个帧,该帧是在序列中紧接在当前帧之前的帧。在使用多于一个运动矢量来生成预测块的情况下,每个运动矢量可以参考单独的参考帧。使用单个预测块预测(例如,使用单个运动矢量生成)的块在本文中被称为单个参考情况,而使用多于一个参考块预测(例如,使用两个或更多个运动矢量生成)的块在本文中被称为混合参考情况。
运动矢量参考可以在帧间预测的过程中使用。通常,运动矢量参考是已经从对当前块之前的不同块进行编码所确定的运动矢量。可以使用运动矢量参考来对用于编码当前块的运动矢量进行不同地编码(并因此解码)。以这种方式将运动矢量不同地编码可以允许将编码的运动矢量包括在视频流中作为例如小的固定数目的比特。替代地或另外,可以使用运动矢量参考作为用于确定用于对当前块进行编码的运动矢量的许多候选运动矢量中的一个。可以从在空间上邻近于当前块的块获得运动矢量参考。运动矢量参考还可以是从时间上相邻的块(也称为同位块,因为其相对于其帧而言位于与要编码的当前块相同的像素位置处)确定的时间运动矢量参考
如述,每个运动矢量可以参考若干可用参考帧中的一个。因此,每个运动矢量参考可以参考若干可用参考帧中的一个。可以发送指示包括运动矢量参考的参考帧是可用参考帧中的一个的信号。作为用信号通知其本身的帧标识符(其可以是相对长的比特序列)的替代,信号可以是识别参考帧的类型的较短比特序列。例如,在一些视频编解码器中,存在三种参考帧——最后一个帧(LAST_FRAME)、黄金帧(GOLDEN_FRAME)以及替代参考帧(ALTREF_FRAME)。
所公开的方面可以检查用于预测先前编码帧中的同位块的运动矢量的参考帧是否是与用于当前块的参考帧相同的类型。如果存在相同类型,则认为运动矢量与不满足此测试的任何其它运动矢量相比处于用于编码当前矢量的较高优先级。例如,如果当前块已经选择LAST_FRAME,并且先前帧中的其同位块也选择了LAST_FRAME,则可以认为该同位块的运动矢量作为运动矢量参考处于用于当前运动矢量编码的较高优先级。
在上述方法中可能存在问题,因为事实是,在编码每个帧之后参考缓冲器将被更新,并且因此参考缓冲器中的一个或多个帧可以用新编码的帧来替代。因此,即使在先前帧和当前帧中的两个块分别选择同一参考帧,例如LAST_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可以是现有的或以后开发的能够操纵或处理信息的任何其它类型的一个或多个设备。虽然可以如示用单个处理器(例如,CPU 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可以是触敏显示器,其将显示器与可操作用于感测触摸输入的触敏元件组合。可以经由总线212将显示器218耦合到CPU 202。除显示器218之外或者作为其替代,可以提供允许用户编程或以其他方式使用计算设备200的其它输出设备。当输出设备是或者包括显示器时,可以以各种方式来实现显示器,包括通过液晶显示器(LCD)、阴极射线管(CRT)显示器或发光二极管(LED)显示器,诸如有机LED(OLED)显示器。
计算设备200还可以包括图像感测设备220或与之通信,图像感测设备220例如相机或者现在存在或以后开发的可以感测图像(诸如操作计算设备200的用户的图像)的任何其它图像感测设备220。图像感测设备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中的16×16个像素的数据。还可以将块310布置成包括来自像素数据的一个或多个平面的数据。块310还可以具有任何其它适当尺寸,诸如4×4像素、8×8像素、16×8像素、8×16像素、16×16像素或更大。如下面更详细地讨论的,可以根据本文中的教导将块310或从帧306的分区得到的其它区域进行分区。即,要编码的区域可以是被分区成较小子块或区域的较大区域。更具体地,可以将要编码的当前区域分成使用例如不同预测模式编码的较小像素组。这些像素组在本文中可以被称为预测子块、预测子区域或预测单元。在一些情况下,仅存在包含要编码的整个区域的一个预测子区,因为该区域仅使用一个预测模式被编码。除非另有说明,下面图4和5中的对块进行编码和解码的描述同样地适用于较大区域的预测子块、预测子区或预测单元。
图4是根据实施方式的编码器400的框图。如上所述,可以诸如通过提供存储在存储器(例如,存储器204)中的计算机软件程序来在发射站102中实现编码器400。计算机软件程序可以包括机器指令,该机器指令在被处理器(诸如CPU 202)执行时使得发射站102以图4中所述的方式对视频数据进行编码。还可以将编码器400实现为包括在例如发射站102中的专用硬件。编码器400具有用于执行前向路径(用连接实线示出)中的各种功能以使用视频流300作为输入而产生编码或压缩的比特流420的下述后级:帧内/帧间预测级402、变换级404、量化级406以及熵编码级408。编码器400还可以包括重建路径(用连接点线示出),用于重建用于未来块的编码的帧。在图4中,编码器400具有用于执行重建路径中的各种功能的下述后级:解量化级410、反变换级412、重建级414以及环路滤波级416。可以使用编码器400的其它结构变体来对视频流300进行编码。
当视频流300被呈现以用于编码时,可以以像素为单位(例如,区)(诸如块)来处理每个帧306。在帧内/帧间预测级402处,可以使用帧内预测(也称为内部预测)或帧间预测(在本文中也称为间预测或之间预测)来对每个块进行编码。在任何情况下,可以形成预测(或预测器)块。在帧内预测的情况下,预测块可以从先前已经被编码和重建的当前帧中的样本形成。在帧间预测的情况下,预测块可以从一个或多个先前构件的参考帧中的样本形成。
接下来,仍参考图4,可以在帧内/帧间预测级别402处从当前块中减去预测块以产生残差块(也称为残差(residual))。变换级404使用基于块的变换将残差变换成例如频域中的变换系数。此类基于块的变换包括例如离散余弦变换(DCT)和不对称离散正弦变换(ADST)。其它基于块的变换是可能的。此外,可以对单个残差应用不同变换的组合。在变换的应用的一个示例中,DCT将残差块变换到频域中,其中,变换系数值是基于空间频率。最低频率(DC)系数在矩阵的左上方处且最高频率系数在矩阵的右下方处。值得注意的是,预测块的尺寸和由此得到的残差块可以不同于变换块的尺寸。例如,可以将残差块或区域分成较小的块区域,对该较小的块区域应用单独变换。
量化级406使用量化器值或量化水平将变换系数转换成离散量值,其被称为量化的变换系数。例如,可以使该变换系数除以量化器值并舍位(truncated)。然后,量化的变换系数通过熵编码级408进行熵编码。可以使用任何数目的技术(包括令牌和二叉树)来执行熵编码。然后,熵编码的系数与用于对块进行解码的其它信息(其可以包括例如所使用的预测的类型、变换类型、运动矢量和量化器值)一起被输出到压缩比特流420。压缩的比特流420还可以被称为编码的视频流或编码的视频比特流,并且该术语在本文中将被可互换地使用。
图4中的重建路径(用连接点线示出)可以用于确保编码器400和解码器500(下面描述)二者使用相同的参考帧来解码压缩的比特流420。重建路径执行与在下面更详细地描述的解码过程期间发生的功能类似的功能,包括在解量化级410处对量化的变换系数解量化并在反变换级412处对解量化的变换系数进行反变换以产生导数残差块(也称为导数残差)。在重建级414处,可以将在帧内/帧间预测级402处预测的预测块与导数残差相加以产生重建块。可以将环路滤波级416应用于重建的块以减少诸如块化伪像的失真。
可以使用编码器400的其它变体来对压缩的比特流420进行编码。例如,基于非变换的编码器400可以针对某些块或帧在没有变换级404的情况下直接量化残差信号。在另一实施方式中,编码器400可以使量化级406和解量化级410组合成单个级。编码器400可以根据这种技术来对任何尺寸或形状聚组的像素进行编码。要编码的像素聚组因此可以更一般地被称为区域。
图5是根据另一实施方式的解码器500的框图。可以例如通过提供存储在存储器204中的计算机软件程序来在接收站106中实现解码器500。计算机软件程序可以包括机器指令,该机器指令在由诸如CPU202的处理器执行时使得接收站106以图5中所述的方式来解码视频数据。还可以以包括在例如发射站102或接收站106中的硬件来实现解码器500。
类似于上文所讨论的编码器400的重建路径,在一个示例中,解码器500包括用于执行用于从压缩的比特流420产生输出视频流516的各种功能的下述后级:熵解码级502、解量化级504、反变换级506、帧内/帧间预测级508、重建级510、环路滤波级512和去块滤波级514。可以使用解码器500的其它结构变体来解码压缩的比特流420。
当压缩的比特流420被提供用于解码时,压缩的比特流420内的数据元素可以由熵解码级502解码以产生量化的变换系数集合。解量化级504对量化的变换系数进行解量化(例如,通过使量化的变换系数乘以量化器值),并且反变换级506使用所选择的变换类型对解量化的变换系数进行反变换,以产生可以与由编码器400中的反变换级412所产生的相同的导数残差。使用从压缩的比特流420解码的报头信息,解码器500例如在帧内/帧间预测级402处使用帧内/帧间预测级508来产生与在编码器400处所产生的相同的预测块。在重建级510处,可以将预测块添加到导数残差块以产生重建块。可以将环路滤波级512应用于重建的块以减少块化伪像。可以对重建的块应用其它滤波。在该示例中,对重建的块应用去块滤波级514以减少块化失真,并且结果作为输出视频流516被输出。还可以将输出视频流516称为解码的视频流,并且该术语在本文中将被可互换地使用。
可以使用解码器500的其它变体来对压缩的比特流420进行解码。例如,解码器500可以在没有去块滤波级514的情况下输出视频流516。虽然为了说明的简单起见参考块来描述,但解码器500可以根据这种技术来解码任何尺寸和形状聚组的像素(例如,区域)。
如上文简要地提到的,可以通过最后一个帧运动矢量分区——即,通过使用运动矢量来调整最后一个帧的分区,来对帧或帧的区域进行分区以用于编码或解码。通常,通过使在先帧分区移位由新区域的运动矢量覆盖的运动矢量中的一个来将区域分成单独区域。
图6是根据本公开的一个实施方式的用于对视频流进行编码或解码的过程600的流程图。可以在诸如计算设备200的系统中实现方法或过程600以辅助视频流的编码或解码。可以将过程600实现为例如由计算设备(诸如发射站102或接收站106)执行的软件程序。软件程序可以包括存储在诸如存储器204的存储器中的机器可读指令,该指令在由诸如CPU202的处理器执行时使得计算设备执行过程600。还可以整体地或部分地使用硬件来实现过程600。如上文所解释的,某些计算设备可以具有多个存储器和多个处理器,并且在这种情况下可以使用不同的处理器和存储器来分配过程600的步骤或操作。术语“处理器”和“存储器”在本文中以单数形式的使用包含具有仅一个处理器或一个存储器的计算设备以及具有每一个可以在一些但不一定是所有阐述的步骤的执行中使用的多个处理器或存储器的设备。
为了说明的简单起见,将过程600描绘并描述为一系列步骤或操作。然而,根据本公开的步骤和操作可以按照各种顺序和/或同时地发射。另外,根据本公开的步骤或操作可以通过在本文中未提出和描述的其它步骤或操作发生。此外,可能并非需要所有图示的步骤或操作来实现根据本公开主题的方法。可以针对输入信号的每个帧的每个块重复过程600。在一些实施方式中,根据过程600仅处理一个或多个帧的一些块。例如,当执行过程600时,可以省略使用帧内预测模式编码的块。
当过程600是编码过程时,输入信号可以是例如视频流300。输入信号可以由以任何数目的方式执行过程600的计算机接收。例如,输入信号可以由图像感测设备220捕捉并且通过连接到总线212的输入从另一设备接收。在另一实施方式中,可以从辅助存储214中检索输入信号。输入信号的接收的其它方式和其他源是可能的。例如,当过程600是解码过程时,输入信号可以是编码的比特流,诸如压缩的比特流420。
使用视频流,在步骤602处,过程600在将编码视频流的帧序列的第一帧之后存储用于多个参考帧中的每一个的参考缓冲器索引以及参考帧标识符。可以参考图7来解释步骤602。图7示出了参考帧700,包括LAST_FRAME 702、GOLDEN_FRAME 704和ALTREF_FRAME706。这三个参考帧700中的一个将在块报头中作为用于每个块的参考帧700而用信号通知。在帧报头级,从参考帧700到参考虚拟标识符或索引708的一对一映射将被写成比特流。针对每个帧将保持另一一对一映射,用于从参考虚拟索引708映射到参考缓冲器标识符或索引710。对于两个连续帧间帧,的那个两个参考帧700被映射到同一参考缓冲器索引710时,过程600指示其是相同的参考。图7的示例具有八个可用参考虚拟虚拟索引708和八个参考缓冲器索引710。
为了跟踪先前同位的块是否使用与当前块相同的参考,编码器和解码器二者可以跟踪参考帧700缓冲器更新并且保存用于先前编码的帧的参考缓冲器索引710映射。因此,编码器和解码器可以识别同位块所使用和当前块所使用的两个参考帧是否被映射到相同参考缓冲器索引710。例如,到每个帧的编码结束时,在参考帧缓冲器的更新之前,在编码器和解码器二者处可以存储对应于每个参考帧700的参考缓冲器索引710表。
当检查同位块的运动矢量时,过程600可以首先识别用于同位块的参考帧700。作为在与当前块的直接比较中使用该参考帧700的替代,解码器或编码器可以识别其参考缓冲器索引710。将用于当前块的参考帧700的参考缓冲器索引710与用于同位块的参考缓冲器索引710作比较。如果相同,则同位块的运动矢量将以较高优先级用作用于当前运动矢量的运动矢量参考。
返回图6,过程600在步骤604处更新参考帧700和与参考帧700相关联的参考虚拟索引708。在步骤606处,过程600确定用于第二帧的当前块的多个候选运动矢量,该多个候选运动矢量包括用于预测第一帧内的同位块的第一运动矢量。在步骤608处,过程600在更新之后执行在多个参考帧700的参考帧700内的当前块的运动搜索,以生成第二运动矢量。在步骤610处,过程600将与关联于第一运动矢量相关联的参考帧700的参考虚拟索引708一起存储的参考缓冲器索引710与在执行运动搜索中使用的参考帧700的参考缓冲器索引710作比较。
在步骤612处,过程600确定在执行运动搜索中使用的参考帧700的参考虚拟索引708是否与关联于第一运动矢量的参考缓冲器索引710匹配。如果发现匹配,则过程600前进至步骤614,其中,可以将第一运动矢量提前到用于编码当前块的多个候选运动矢量中的其余运动矢量之前;否则,过程600返回至步骤602以处理另一块。
将第一运动矢量提前到用于编码当前块的其余候选运动矢量之前可以使得所选择的运动矢量更准确地预测当前运动矢量。因此,在预测的运动矢量与当前运动矢量之间的差将是小的,并且可以以小数目的比特在视频流中表示,从而节省带宽。
在使用双预测来预测当前帧的当前块(其中可以使用两个参考帧来预测当前块)的情况下,所公开的实施方式的各方面可以预测运动矢量。在双预测中,用于运动矢量预测的当前帧和先前帧二者可以使用LAST_FRAME 702或GOLDEN_FRAME 704来被正向预测,或者使用ALTREF_FRAME 706来被反向预测。如上文关于图6公开的,所公开的方面可以确定用于运动预测的先前帧是否可以具有与当前帧相同的参考帧。在使用双预测来预测当前帧和先前帧的情况下,可以使用下述步骤通过跟踪参考帧缓冲器的更新来确定来自先前帧中的同位块的运动矢量候选:
(1)使用下述检查规则,通过针对先前帧和先前帧之前的帧二者跟踪参考帧缓冲器更新来检查跨三个相邻帧是否存在平滑运动:对于一对当前块及其同位块,二者使用其先前编码的帧作为其参考,并且两个参考帧对于正向预测具有相同的符号偏误;
(2)如果存在用于当前块的第二帧,例如当混合模式可用于当前块时,则针对第二帧重复步骤(1)以检查是否存在针对第二帧存在的平滑运动。
(3)使用下述规则来检查符号偏误是否指示用于当前块及其同位块二者的反向预测以及针对两个块相同帧是否已经用作参考:首先,检查当前块是否使用ALTREF_FRAME706作为其参考帧,其指示考虑反向运动;如果是,则通过识别其参考帧的符号偏误来检查同位块是否也使用反向预测;如果是,则检查当前块及其同位块是否使用相同帧作为其参考。如果是,则将与先前帧相关联的运动矢量提前到其余候运动矢量之前。
(4)如果针对当前块存在第二帧,例如当针对当前块考虑混合模式时,则针对第二帧重复步骤(4)以检查对于当前块和同位块二者是否存在反向预测并且两个块是否使用相同的帧用于反向预测。如果是,则将与先前帧相关联的运动矢量提前到其余候运动矢量之前。
(5)检查当前块和同位块是否使用的相同的帧作为其参考帧。如果是,则将与先前帧相关联的运动矢量提前到其余候运动矢量之前。
(6)如果针对当前块存在第二帧,例如当针对当前块考虑混合模式时,则针对第二帧重复步骤(5)以检查对于当前块和同位块二者是否存在相同帧被用作其参考。如果是,则将与先前帧相关联的运动矢量提前到其余候运动矢量之前。
上文所述的编码和解码的各方面举例说明了编码和解码技术的一些示例。然而,应理解的是编码和解码(如在权利要求中使用的那些术语)可以指数据的压缩、解压缩、变换或任何其它处理或改变。
单词“示例”或“方面”在本文中被用来意指充当、实例或图示。在本文中描述为“示例”或“方面”的任何方面或设计不一定要理解为相对于其它方面或设计而言是优选或有利的。相反地,单词“示例”或“方面”的使用意图以具体的方式提出概念。如在本申请中使用的术语“或”意图意指包括性“或”而不是排他性“或”。也就是说,除非另外指定,或者从上下文显而易见,“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发射的内容)解码。其它适当的发射和接收实现方案是可用的。例如,接收站106可以是大体上固定的个人计算机而不是便携式通信设备和/或包括编码器400的设备还可以包括解码器500。
此外,本公开的所有实施方式或其一部分可以采取从例如有形计算机可用或计算机可读介质可访问的计算机程序产品的形式。计算机可用或计算机可读介质可以是可以有形地包含、存储、传送或传输程序以供任何处理器使用或与之相结合地使用的任何设备。该介质可以是例如电子、磁性、光学、电磁或半导体设备。其它适当介质也是可用的。
描述上述实施例、实施方式和方面是为了允许容易地本发明的理解而不限制本发明。相反地,本发明意图涵盖包括在所附权利要求范围内的各种修改和等同布置,该范围将是根据最宽泛的解释从而涵盖根据法律许可的所有此类修改和等同结构。

Claims (21)

1.一种用于使用计算设备对视频流进行编码的方法,所述视频流具有帧序列,所述帧具有块,并且所述块具有像素,所述方法包括:
在对所述帧序列的第一帧进行编码之后,存储用于多个参考帧中的每一个的参考缓冲器索引和参考帧标识符;
在所述存储之后,通过更新与参考帧标识符相关联的参考帧来更新所述多个参考帧;
在所述更新之后,确定用于第二帧的当前块的多个候选运动矢量,所述多个候选运动矢量包括用于预测所述第一帧内的同位块的第一运动矢量;
在所述更新之后执行在所述多个参考帧中的参考帧内的当前块的运动搜索,以生成第二运动矢量;
将与关联于所述第一运动矢量的参考帧的所述参考帧标识符一起存储的所述参考缓冲器索引与在所述执行中使用的所述参考帧的参考缓冲器索引作比较;以及
在所述执行中使用的所述参考帧的所述参考缓冲器索引匹配与关联于所述第一运动矢量的参考帧的所述参考帧标识符一起存储的所述参考缓冲器索引的条件下,将所述第一运动矢量提前到用于编码所述当前块的所述多个候选运动矢量中的其余运动矢量之前。
2.根据权利要求1所述的方法,其中:
所述第二帧在所述序列中在所述第一帧之后;
所述多个参考帧包括在对当前帧进行编码之前的所述序列中的最后一个帧,所述最后一个帧具有最后一个帧标识符作为参考帧标识符;并且
更新所述多个参考帧包括将与所述最后一个帧标识符相关联的参考缓冲器索引更新为所述第一帧的参考缓冲器索引。
3.根据权利要求2所述的方法,其中:
所述多个参考系包括黄金帧和替代参考帧;并且
更新所述多个参考帧包括仅更新与所述最后一个帧标识符相关联的参考缓冲器索引。
4.根据权利要求2所述的方法,其中:
所述多个参考帧包括具有黄金帧标识符作为所述参考帧标识符的黄金帧以及具有替代参考帧标识符作为所述参考帧标识符的替代参考帧;并且更新所述多个参考帧包括下述中的至少一个:
将与所述替代参考帧标识符相关联的参考缓冲器索引更新为新的替代参考帧的参考缓冲器索引;以及
将与所述黄金帧标识符相关联的参考缓冲器索引更新为新的黄金帧的参考缓冲器索引。
5.根据权利要求1所述的方法,进一步包括:
使用所述第一运动矢量作为运动矢量预测器来对所述第二运动矢量进行编码。
6.根据权利要求1所述的方法,其中:
将所述第一运动矢量提前到用于编码所述当前块的多个候选运动矢量中的其余候选运动矢量之前包括:通过使用所述第一运动矢量初始化所述运动搜索来执行所述运动搜索。
7.根据权利要求6所述的方法,进一步包括:
使用第一运动矢量作为运动矢量预测器来对所述第二运动矢量进行编码。
8.根据权利要求1所述的方法,其中:
更新所述多个参考帧包括:在所述存储之后更新与相应的参考帧标识符相关联的至少两个参考帧;并且
所述多个候选运动矢量包括用于预测所述第一帧内的同位块的第三运动矢量;
所述方法进一步包括:
在所述更新之后执行在所述多个参考帧中的不同参考帧内的第二块的第二运动搜索,以生成第四运动矢量;
将与关联于所述第三运动矢量的参考帧的所述参考帧标识符一起存储的所述参考缓冲器索引与在执行所述第二运动搜索中使用的所述参考帧的参考缓冲器索引作比较;
其中,将所述第一运动矢量提前到用于对所述当前块进行编码的所述多个候选运动矢量中的其余运动矢量之前包括:将所述第一运动矢量提前到用于对所述第三运动矢量进行编码的所述多个候选运动矢量中的其余运动矢量之前;以及
在执行第二运动搜索中所使用的参考帧的所述参考缓冲器索引匹配与关联于所述第三运动矢量相关联的参考帧的所述参考帧标识符一起存储的所述参考缓冲器索引的条件下,将所述第二运动矢量提前到用于对所述第四运动矢量进行编码的所述多个候选运动矢量中的其余运动矢量之前。
9.一种对视频流进行编码的装置,所述视频流具有帧序列,所述帧具有块,并且所述块具有像素,所述装置包括:
处理器;以及
存储指令的存储器,所述指令使得所述处理器执行操作,所述操作包括:
在对所述帧序列的第一帧进行编码之后,存储用于多个参考帧中的每一个的参考缓冲器索引和参考帧标识符;
在所述存储之后,通过更新与参考帧标识符相关联的参考帧来更新所述多个参考帧;
在所述更新之后,确定用于第二帧的当前块的多个候选运动矢量,所述多个候选运动矢量包括用于预测所述第一帧内的同位块的第一运动矢量;
在所述更新之后执行在所述多个参考帧中的参考帧内的当前块的运动搜索,以生成第二运动矢量;以及
将与关联于所述第一运动矢量的参考帧的所述参考帧标识符一起存储的所述参考缓冲器索引与在所述执行中使用的所述参考帧的参考缓冲器索引作比较;以及
在所述执行中使用的所述参考帧的所述参考缓冲器索引匹配与关联于所述第一运动矢量的参考帧的所述参考帧标识符一起存储的所述参考缓冲器索引的条件下,将所述第一运动矢量提前到用于编码所述当前块的所述多个候选运动矢量中的其余运动矢量之前。
10.根据权利要求9所述的装置,进一步包括:
与所述存储器分离的第二存储器;并且
其中,用于所述多个参考帧中的每一个的所述参考缓冲器索引表示所述第二存储器内的参考帧的唯一位置。
11.根据权利要求9所述的装置,所述操作进一步包括:
通过使用所述第一运动矢量和与所述第一运动矢量相关联的参考帧对所述同位块进行编码,来将所述第一帧编码成编码的视频比特流;
将与第一运动矢量相关联的参考帧与参考虚拟索引相关联,并且将所述参考虚拟索引与关联于所述第一运动矢量的所述参考帧的所述参考缓冲器索引相关联;以及
通过在所述编码的视频比特流内用信号通知所述参考虚拟索引,来用信号向解码器通知与所述第一运动矢量相关联的所述参考帧。
12.根据权利要求9所述的装置,其中:
所述多个参考帧包括三个参考帧;
所述三个参考帧中的第一个与第一唯一参考帧标识符和第一唯一参考缓冲器索引相关联;
所述三个参考帧中的第二个与第二唯一参考帧标识符和第二唯一参考缓冲器索引相关联;
所述三个参考帧中的第三个与第三唯一参考帧标识符和第三唯一参考缓冲器索引相关联;并且
所述存储包括存储下述表:该表将所述三个参考帧中的第一个与所述第一唯一参考帧标识符和所述第一唯一参考缓冲器索引相关联、将所述三个参考帧中的第二个与所述第二唯一参考帧标识符和所述第二唯一参考缓冲器索引相关联、并且将所述三个参考帧中的第三个与所述第三唯一参考帧标识符和所述第三唯一参考缓冲器索引相关联。
13.根据权利要求12所述的装置,所述操作进一步包括:
将所述表存储在所述存储器内。
14.根据权利要求9所述的装置,所述操作进一步包括:
在对所述帧序列中的第二帧进行编码之后,第二次存储用于多个参考帧中的每一个的参考缓冲器索引和参考帧标识符,
在第二次存储之后,通过第二次更新与参考帧标识符相关联的参考帧来更新所述多个参考帧;
在第二次更新之后,确定用于第三帧的当前块的多个候选运动矢量,所述多个候选运动矢量包括用于预测所述第二帧内的同位块的第一运动矢量;
在第二次更新之后,执行在所述多个参考帧中的参考帧内的所述第三帧的当前块的运动搜索,以生成用于所述第三帧的当前块的第二运动矢量;
将与关联于用于预测所述第二帧内的所述同位块的所述第一运动矢量的参考帧的所述参考帧标识符一起存储的所述参考缓冲器索引与在执行所述第三帧的当前块的所述运动搜索中使用的参考帧的参考缓冲器索引作比较;以及
在执行所述第三帧的当前块的所述运动搜索中使用的参考帧的所述参考缓冲器索引匹配与关联于用于预测所述第二帧内的所述同位块的所述第一运动矢量的参考帧的所述参考帧标识符一起存储的所述参考缓冲器索引的条件下,将用于预测所述第二帧内的所述同位块的所述第一运动矢量提前到用于对所述第三帧的当前块进行编码的多个候选运动矢量中的其余候选运动矢量之前。
15.根据权利要求9所述的装置,其中:
所述第二帧在所述序列中在所述第一帧之后;
所述多个参考帧包括:
在对当前帧进行编码之前的所述序列中的最后一个帧,所述最后一个帧具有最后一个帧标识符作为参考帧标识符;
具有黄金帧标识符作为所述参考帧标识符的黄金帧;以及
具有替代参考帧标识符作为所述参考帧标识符的替代帧;以及
更新所述多个参考帧,所述多个参考帧包括下述中的至少一个:
将与所述最后一个帧标识符相关联的参考缓冲器索引更新为第一帧的参考缓冲器索引;
将与所述替代参考帧标识符相关联的参考缓冲器索引更新为新的替代参考帧的参考缓冲器索引;或者
将与所述黄金帧标识符相关联的参考缓冲器索引更新为新的黄金帧的参考缓冲器索引。
16.根据权利要求9所述的装置,所述操作进一步包括:
使用所述第一运动矢量作为运动矢量预测器来对所述第二运动矢量进行编码。
17.根据权利要求9所述的装置,所述操作进一步包括:
通过使用所述第一运动矢量初始化运动搜索,来将所述第一运动矢量提前到用于对所述当前块进行编码的所述多个候选运动矢量中的其余候选运动矢量之前。
18.一种用于对编码的视频比特流进行解码的装置,所述编码的视频比特流具有帧序列,所述帧具有块,并且所述块具有像素,所述装置包括:
处理器;以及
存储指令的存储器,所述指令使得所述处理器执行操作,所述操作包括:
在对所述帧序列的第一帧进行解码之后,存储用于多个参考帧中的每一个的参考缓冲器索引和参考帧标识符;
在所述存储之后,通过更新与参考帧标识符相关联的参考帧来更新所述多个参考帧;
在所述更新之后,确定用于第二帧的当前块的多个候选运动矢量,所述多个候选运动矢量包括用于预测所述第一帧内的同位块的第一运动矢量;
将与关联于所述第一运动矢量的参考帧的所述参考帧标识符一起存储的所述参考缓冲器索引与用于预测第二帧的当前块的参考帧的参考缓冲器索引作比较;以及
在用于预测所述第二帧的当前块的参考帧的所述参考缓冲器索引匹配与关联于所述第一运动矢量的参考帧的所述参考帧标识符一起存储的所述参考缓冲器索引的条件下,将所述第一运动矢量提前到用于解码所述当前块的所述多个候选运动矢量中的其余运动矢量之前。
19.根据权利要求18所述的装置,进一步包括:
与所述存储器分离的第二存储器;并且
其中,用于所述多个参考帧中的每一个的所述参考缓冲器索引表示所述第二存储器内的参考帧的唯一位置。
20.根据权利要求18所述的装置,所述操作进一步包括:
接收所述编码的视频比特流内的参考虚拟索引,所述参考虚拟索引与关联于所述第一运动矢量的参考帧相关联;
通过使用所述第一运动矢量和与所述第一运动矢量相关联的所述参考帧对所述同位块进行解码,来对所述第一帧进行解码;以及
将所述参考虚拟索引与关联于所述第一运动矢量的所述参考帧的参考缓冲器索引相关联。
21.一种用于解码编码的视频比特流的方法,所述编码的视频比特流具有帧序列,所述帧具有块,并且所述块具有像素,所述方法包括:
在对所述帧序列的第一帧进行解码之后,存储用于多个参考帧中的每一个的参考缓冲器索引和参考帧标识符;
在所述存储之后,通过更新与参考帧标识符相关联的参考帧来更新所述多个参考帧;
在所述更新之后,确定用于第二帧的当前块的多个候选运动矢量,所述多个候选运动矢量包括用于预测所述第一帧内的同位块的第一运动矢量;
将与关联于所述第一运动矢量的参考帧的所述参考帧标识符一起存储的所述参考缓冲器索引与用于预测第二帧的当前块的参考帧的参考缓冲器索引作比较;以及
在用于预测所述第二帧的当前块的参考帧的所述参考缓冲器索引匹配与关联于所述第一运动矢量的参考帧的所述参考帧标识符一起存储的所述参考缓冲器索引的条件下,将所述第一运动矢量提前到用于解码所述当前块的所述多个候选运动矢量中的其余运动矢量之前。
CN201611224939.1A 2016-03-18 2016-12-27 通过参考帧缓冲器跟踪的运动矢量参考选择 Active CN107205149B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/074,329 US9866862B2 (en) 2016-03-18 2016-03-18 Motion vector reference selection through reference frame buffer tracking
US15/074,329 2016-03-18

Publications (2)

Publication Number Publication Date
CN107205149A true CN107205149A (zh) 2017-09-26
CN107205149B CN107205149B (zh) 2020-03-03

Family

ID=57822051

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611224939.1A Active CN107205149B (zh) 2016-03-18 2016-12-27 通过参考帧缓冲器跟踪的运动矢量参考选择

Country Status (9)

Country Link
US (1) US9866862B2 (zh)
JP (1) JP6767488B2 (zh)
KR (1) KR102097285B1 (zh)
CN (1) CN107205149B (zh)
AU (1) AU2016398050B2 (zh)
CA (1) CA3008890C (zh)
DE (2) DE102016125094A1 (zh)
GB (1) GB2548449B (zh)
WO (1) WO2017160366A1 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110460857A (zh) * 2018-05-08 2019-11-15 腾讯美国有限责任公司 视频解码方法、设备以及计算机可读存储介质
CN111699688A (zh) * 2018-03-29 2020-09-22 华为技术有限公司 帧间预测的方法和装置
CN111757116A (zh) * 2018-03-29 2020-10-09 联发科技股份有限公司 具有限制的重建缓冲器的视频编码设备以及关联的视频编码方法
CN112385229A (zh) * 2018-06-29 2021-02-19 交互数字Vc控股公司 虚拟时间仿射候选
CN113170108A (zh) * 2018-11-27 2021-07-23 Op方案有限责任公司 使用显式和隐式信令对不可用参考帧进行自适应块更新
CN113453015A (zh) * 2019-01-03 2021-09-28 深圳市大疆创新科技有限公司 视频处理方法和装置
CN114009038A (zh) * 2019-04-25 2022-02-01 Op方案有限责任公司 图像标头中全局运动矢量的信号发送
CN114175645A (zh) * 2019-07-06 2022-03-11 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的虚拟预测缓冲
CN114503580A (zh) * 2019-09-23 2022-05-13 北京字节跳动网络技术有限公司 基于虚拟管线数据单元设置帧内块复制虚拟缓冲区
US11985308B2 (en) 2019-03-04 2024-05-14 Beijing Bytedance Network Technology Co., Ltd Implementation aspects in intra block copy in video coding

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11445223B2 (en) * 2016-09-09 2022-09-13 Microsoft Technology Licensing, Llc Loss detection for encoded video transmission

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009115901A2 (en) * 2008-03-19 2009-09-24 Nokia Corporation Combined motion vector and reference index prediction for video coding
CN103119940A (zh) * 2010-09-30 2013-05-22 日本电信电话株式会社 视频编码方法、视频解码方法、视频编码装置、视频解码装置以及它们的程序

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8995536B2 (en) 2003-07-23 2015-03-31 Broadcom Corporation System and method for audio/video synchronization
US7933335B2 (en) * 2004-11-30 2011-04-26 Panasonic Corporation Moving picture conversion apparatus
US9042454B2 (en) * 2007-01-12 2015-05-26 Activevideo Networks, Inc. Interactive encoded content system including object models for viewing on a remote device
US20100309981A1 (en) * 2009-06-04 2010-12-09 Texas Instruments Incorporated Reuse of a search region in motion estimation of multiple target frames
US8917769B2 (en) * 2009-07-03 2014-12-23 Intel Corporation Methods and systems to estimate motion based on reconstructed reference frames at a video decoder
CN102045557B (zh) 2009-10-20 2012-09-19 鸿富锦精密工业(深圳)有限公司 视频编解码方法及使用其的视频编码、解码装置
US8824560B2 (en) 2010-07-07 2014-09-02 Netzyn, Inc. Virtual frame buffer system and method
GB2501836B (en) 2011-03-09 2014-08-06 Canon Kk Video encoding
JP2012191298A (ja) * 2011-03-09 2012-10-04 Fujitsu Ltd 動画像復号装置、動画像符号化装置、動画像復号方法、動画像符号化方法、動画像復号プログラム及び動画像符号化プログラム
US9900615B2 (en) * 2011-12-28 2018-02-20 Microsoft Technology Licensing, Llc Representative motion information for temporal motion prediction in video encoding and decoding
WO2013162980A2 (en) * 2012-04-23 2013-10-31 Google Inc. Managing multi-reference picture buffers for video data coding
US9014266B1 (en) * 2012-06-05 2015-04-21 Google Inc. Decimated sliding windows for multi-reference prediction in video coding
US9485515B2 (en) * 2013-08-23 2016-11-01 Google Inc. Video coding using reference motion vectors
GB2521227B (en) 2013-12-16 2020-11-25 Advanced Risc Mach Ltd Invalidation of index items for a temporary data store
US10757437B2 (en) * 2014-07-17 2020-08-25 Apple Inc. Motion estimation in block processing pipelines
US9762919B2 (en) * 2014-08-28 2017-09-12 Apple Inc. Chroma cache architecture in block processing pipelines
CN104811721B (zh) 2015-05-26 2017-09-22 珠海全志科技股份有限公司 视频解码数据存储方法及运动向量数据的计算方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009115901A2 (en) * 2008-03-19 2009-09-24 Nokia Corporation Combined motion vector and reference index prediction for video coding
CN103119940A (zh) * 2010-09-30 2013-05-22 日本电信电话株式会社 视频编码方法、视频解码方法、视频编码装置、视频解码装置以及它们的程序

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11412210B2 (en) 2018-03-29 2022-08-09 Huawei Technologies Co., Ltd. Inter prediction method and apparatus for video coding
CN111699688A (zh) * 2018-03-29 2020-09-22 华为技术有限公司 帧间预测的方法和装置
CN111757116A (zh) * 2018-03-29 2020-10-09 联发科技股份有限公司 具有限制的重建缓冲器的视频编码设备以及关联的视频编码方法
CN111699688B (zh) * 2018-03-29 2022-11-25 华为技术有限公司 帧间预测的方法和装置
CN111757116B (zh) * 2018-03-29 2022-11-04 联发科技股份有限公司 具有限制的重建缓冲器的视频编码设备以及关联的视频编码方法
CN110460857A (zh) * 2018-05-08 2019-11-15 腾讯美国有限责任公司 视频解码方法、设备以及计算机可读存储介质
CN110460857B (zh) * 2018-05-08 2021-12-24 腾讯美国有限责任公司 视频解码方法、设备以及计算机可读存储介质
CN112385229A (zh) * 2018-06-29 2021-02-19 交互数字Vc控股公司 虚拟时间仿射候选
CN113170108A (zh) * 2018-11-27 2021-07-23 Op方案有限责任公司 使用显式和隐式信令对不可用参考帧进行自适应块更新
CN113453015A (zh) * 2019-01-03 2021-09-28 深圳市大疆创新科技有限公司 视频处理方法和装置
US11985308B2 (en) 2019-03-04 2024-05-14 Beijing Bytedance Network Technology Co., Ltd Implementation aspects in intra block copy in video coding
CN114009038A (zh) * 2019-04-25 2022-02-01 Op方案有限责任公司 图像标头中全局运动矢量的信号发送
CN114175645A (zh) * 2019-07-06 2022-03-11 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的虚拟预测缓冲
CN114175645B (zh) * 2019-07-06 2024-04-12 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的虚拟预测缓冲
CN114503580A (zh) * 2019-09-23 2022-05-13 北京字节跳动网络技术有限公司 基于虚拟管线数据单元设置帧内块复制虚拟缓冲区

Also Published As

Publication number Publication date
KR102097285B1 (ko) 2020-04-06
DE202016008192U1 (de) 2017-06-01
GB2548449A8 (en) 2018-03-21
GB2548449B (en) 2020-06-03
GB2548449A (en) 2017-09-20
AU2016398050B2 (en) 2019-05-09
DE102016125094A1 (de) 2017-09-21
WO2017160366A1 (en) 2017-09-21
CN107205149B (zh) 2020-03-03
GB201621543D0 (en) 2017-02-01
US9866862B2 (en) 2018-01-09
CA3008890A1 (en) 2017-09-21
CA3008890C (en) 2019-10-29
US20170272773A1 (en) 2017-09-21
AU2016398050A1 (en) 2018-04-26
KR20180069905A (ko) 2018-06-25
JP2019508918A (ja) 2019-03-28
JP6767488B2 (ja) 2020-10-14

Similar Documents

Publication Publication Date Title
CN107205149A (zh) 通过参考帧缓冲器跟踪的运动矢量参考选择
US20220353534A1 (en) Transform Kernel Selection and Entropy Coding
CN107027038B (zh) 动态参考运动矢量编码模式
CN111757106B (zh) 使用多级复合预测对视频流中的当前块编译的方法和设备
JP6605726B2 (ja) 直前のフレームの動きベクトルパーティショニング
CN110741643A (zh) 用于视频代码化的复合帧内预测
US10506240B2 (en) Smart reordering in recursive block partitioning for advanced intra prediction in video coding
CN107205156B (zh) 通过缩放的运动矢量预测
US20180213239A1 (en) Motion Vector Dependent Spatial Transformation in Video Coding
US20210112270A1 (en) Dynamic motion vector referencing for video coding
CN107071440A (zh) 使用先前帧残差的运动矢量预测
CN110169068B (zh) Dc系数符号代码化方案
CN110741641B (zh) 用于视频压缩的方法和装置
CN107318015A (zh) 用于视频编码的混合预测模式
CN104704826A (zh) 两步量化和编码方法和装置
CN107018416A (zh) 用于视频和图像压缩的自适应贴片数据大小编码
CN110692247B (zh) 复合运动补偿的预测
CN110731082B (zh) 使用反向排序来压缩视频帧组
CN107396127A (zh) 用于视频编码的超宽区域运动估计
CN109906610A (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
CB02 Change of applicant information

Address after: American California

Applicant after: Google limited liability company

Address before: American California

Applicant before: Google Inc.

GR01 Patent grant
GR01 Patent grant