CN110998661A - 视频编码系统和方法中的压缩编码块头 - Google Patents

视频编码系统和方法中的压缩编码块头 Download PDF

Info

Publication number
CN110998661A
CN110998661A CN201780090603.7A CN201780090603A CN110998661A CN 110998661 A CN110998661 A CN 110998661A CN 201780090603 A CN201780090603 A CN 201780090603A CN 110998661 A CN110998661 A CN 110998661A
Authority
CN
China
Prior art keywords
block
encoded
coding
encoding
header
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
CN201780090603.7A
Other languages
English (en)
Inventor
朱维佳
蔡家扬
王凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
RealNetworks LLC
Original Assignee
RealNetworks 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 RealNetworks Inc filed Critical RealNetworks Inc
Publication of CN110998661A publication Critical patent/CN110998661A/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/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/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/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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • 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/88Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

本文提供了用于使用压缩编码头格式对视频帧序列的未编码视频帧编码的系统和方法。在帧被划分成编码块和编码的视觉数据之后,每个编码块的编码块头数据被组合和编码。在帧的帧头中设置标志指示使用压缩编码块头格式还是非压缩编码块头格式。

Description

视频编码系统和方法中的压缩编码块头
技术领域
本公开涉及视频信号的编码和解码,更具体地,涉及为视频序列的帧选择预测运动矢量。
背景技术
诸如数字图像、语音/音频、图形和视频等的数字多媒体的出现大大改善了各种应用并且开放了全新的应用,因为它能相对容易地实现可靠的存储、通信、传输和搜索及访问内容。总体而言,数字多媒体的应用很多,包括娱乐、信息、医药、安全等的广泛应用,并以多种方式使社会受益。由诸如相机和麦克风的传感器捕获的多媒体通常是模拟的,并且脉冲编码调制(PCM)形式的数字化过程使其成为数字的。然而,在数字化之后,由于必须重新创建扬声器和/或TV显示器所需的模拟表示,因而所产生的数据量可能非常大。因此,大量数字多媒体内容的高效传送、存储或传输需要将其从原始PCM形式压缩成压缩表示。因此,已经发明了许多用于压缩多媒体的技术。多年来,视频压缩技术已经变得非常复杂,它们经常可以实现10到100之间的高压缩因子,同时保持通常类似于未压缩的数字视频的高度的心理视觉质量。
虽然迄今为止,视频压缩技术和科学方面取得了巨大的进步(表现为大量标准团体驱动的视频编码标准,诸如MPEG-1、MPEG-2、H.263、MPEG-4第2部分、MPEG-4AVC/H.264、MPEG-4SVC和MVC、以及业界驱动的专有标准,诸如Windows Media Video,RealVideo,On2VP等),但是消费者对更高品质、更高清晰度越来越渴望且现在的3D(立体声)视频(无论何时何地都能访问)必须通过诸如DVD/BD等的各种手段通过空中广播、线缆/卫星、有线和移动网络传送到一系列客户端装置,例如PC/笔记本电脑、TV、机顶盒、游戏机、便携式媒体播放器/装置、智能手机和可佩带式计算装置,从而更加需要更高级别的视频压缩。在标准团体驱动的标准中,最近由ISO MPEG在高效率视频编码开始的努力证明了这一点,其预计将结合ITU-T标准委员会多年在H.265视频压缩方面的探索性工作得到的新技术贡献和技术。
所有上述标准采用一般的帧内/帧间预测编码框架来减少编码位流的空间和时间冗余。帧间预测的基本概念是通过使用块匹配方法去除相邻图片之间的时间依赖性。在编码过程开始时,未编码的视频序列的每一帧被分组成下列三种类型之一:I型帧、P型帧和B型帧。I型帧被帧内编码。也就是说,仅使用来自帧本身的信息来对图片进行编码,并且不使用帧间运动补偿技术(尽管可以应用帧内运动补偿技术)。
使用帧间运动补偿技术对其它两种类型即P型和B型的帧进行编码。P图片与B图片之间的差异是用于运动补偿的参考图片的时间方向。P型图片利用来自按显示顺序的先前图片的信息,而B型图片可以利用来自按显示顺序的先前和未来图片的信息。
对于P型帧和B型帧,每个帧被划分成由每个像素的亮度和色度分量的系数表示的像素块,并且为每个块获得一个或多个运动矢量(因为B型图片可以利用来自未来和过去编码帧的信息,所以可以为每个块编码2个运动矢量)。运动矢量(MV)表示从当前块的位置到另一先前编码的帧(其可以是按显示顺序的过去帧或未来帧)中的相似块(分别被称为参考块和参考帧)的位置的空间位移。计算参考块与当前块之间的差异来生成残差(也称为“残差信号”)。因此,对于帧间编码帧的每个块,仅需要对残差和运动矢量进行编码,而不是对块的整体内容进行编码。通过去除视频序列的帧之间的这种时间冗余,可以压缩视频序列。
为了进一步压缩视频数据,在应用帧间或帧内预测技术之后,经常将残差信号的系数从空间域变换到频域(例如使用离散余弦变换(“DCT”)或离散正弦变换(“DST”))。对于自然发生的图像,例如通常构成人类可感知的视频序列的图像的类型,低频能量总是比高频能量强。因此,残差信号在频域中比在空间域中得到更好的能量压缩。在正向变换之后,系数和运动矢量可以被量化和熵编码。
在解码器侧,应用逆向量化和逆向变换来恢复空间残差信号。这些是所有视频压缩标准中的典型变换/量化过程。然后可以执行反向预测过程以生成原始未编码视频序列的重新创建的版本。
在过去的标准中,编码中使用的块通常是16×16像素(在许多视频编码标准中称为宏块)。然而,由于这些标准的发展,帧大小越来越大,并且许多装置已经获得了比“高清”(或“HD”)帧大小更高的显示能力,例如2048×1530像素。因此,可能需要更大的块来高效地编码这些帧大小(例如,64×64像素)的运动矢量。然而,由于分辨率的相应提高,还可能希望能够对较小规模(例如,4×4像素)执行运动预测和变换。
编码器可以生成与整个帧对应的位流,其按顺序包括图片头、用于帧的第一编码块的第一编码块头、与帧的第一编码块的图像数据对应的第一残差数据块、用于第二编码块的第二编码块头、与第二编码块的图像数据对应的第二残差数据块、用于第三编码块的第三编码块头、与第三编码块的图像数据对应的第三残差数据块等。
图片头可以包含与用于解码整个帧的下游解码器相关的信息。类似地,每个编码块头可以包含与用于解码即将到来的编码块的下游解码器相关的信息。例如,编码块头可以包括与编码块的划分标志相关的码字、编码模式/编码块类型、预测信息、运动信息等等。
随着运动预测分辨率的提高,对于每个帧由此对于整个视频序列,编码和传输运动矢量所需的带宽量增加。
附图说明
图1示出了根据至少一个实施方式的示例性视频编码/解码系统。
图2示出了根据至少一个实施方式的示例性编码装置的组件块示图。
图3示出了根据至少一个实施方式的示例性解码装置的组件块示图。
图4示出了根据至少一个实施方式的示例性视频编码器的控制流图。
图5示出了根据至少一个实施方式的示例性视频解码器的控制流。
图6示出了根据至少一个实施方式的示例性递归编码块划分方案的示意图。
图7A至图7C示出了根据至少一个实施方式的在图6中示出的递归编码块划分方案的示例性应用的示意图。
图8示出了根据至少一个实施方式的非压缩编码块头位流格式和压缩编码块头位流格式的示例性示图。
图9A至图9C示出了根据至少一个实施方式的在图8中所示的非压缩编码块头位流格式和压缩编码块头位流格式的示例性应用的示意图。
图10A至图10B示出了根据至少一个实施方式的示例性视频编码例程。
图11示出了根据至少一个实施方式的示例性编码块划分子例程。
图12示出了根据至少一个实施方式的示例性运动矢量选择例程。
具体实施方式
下面的详细描述主要在常规计算机组件的操作的过程和符号表示方面表示,常规计算机组件包括处理器、用于处理器的存储器存储装置、连接的显示装置和输入装置。此外,这些过程和操作可以利用异构分布式计算环境中的常规计算机组件,包括远程文件服务器、计算机服务器和存储器存储装置。这些常规分布式计算组件中的每个可由处理器经由通信网络访问。
短语“在一个实施方式中”、“在至少一个实施方式中”、“在各个实施方式中”、“在一些实施方式中”等在本文中可以重复使用。这样的短语不一定指代同一实施方式。术语“包括”、“具有”和“包含”是同义的,除非上下文另有规定。在上文总体上描述的典型“混合”视频编码方法的上下文中描述各个实施方式,因为它使用图片间/图片内预测和变换编码。
现在详细参考附图中所示的实施方式的描述。虽然结合附图和相关描述描述了实施方式,但是本领域普通技术人员将理解,在不偏离本公开的范围的情况下,替代和/或等效的实现可以代替所显示和所描述的特定实施方式,包含所有替代、修改和等同,不管是否明确地说明和/或描述。在各种替代的实施方式中,附加装置或所示装置的组合可以被添加或组合而不会限制本文公开的实施方式的范围。
示例性视频编码/解码系统
图1示出了根据至少一个实施方式的示例性编码/解码系统100。编码装置200(在图2中示出并在下面描述)和解码装置300(在图3中示出并在下面描述)与网络104进行数据通信。编码装置200可以通过直接数据连接(例如存储区域网络(“SAN”))、高速串行总线和/或经由其它合适的通信技术或经由网络104(如图1中的虚线所示)与未编码视频源108进行数据通信。类似地,解码装置300可以通过直接数据连接(例如,存储区域网络(“SAN”))、高速串行总线和/或经由其它合适的通信技术或经由网络104(如图1中的虚线所示)与任选的编码视频源112进行数据通信。在一些实施方式中,编码装置200、解码装置300、编码视频源112和/或未编码视频源108可以包括一个或多个复制的和/或分布式的物理或逻辑装置。在许多实施方式中,可以存在比所示出的更多的编码装置200、解码装置300、未编码视频源108和/或编码视频源112。
在各个实施方式中,编码装置200可以是通常能够通过网络104接受例如来自解码装置300的请求并相应地提供响应的联网计算装置。在各个实施方式中,解码装置300可以是诸如移动手机、手表、眼镜或其它可佩带计算装置的具有形状因子的联网计算装置、专用媒体播放器、计算平板电脑、机动车辆音响主机、音频-视频点播(AVOD)系统、专用媒体控制台、游戏装置、“机顶盒”、数字录像机、电视、或通用计算机。在各个实施方式中,网络104可以包括因特网、一个或多个局域网(“LAN”)、一个或多个广域网(“WAN”)、蜂窝数据网络和/或其它数据网络。在各个点,网络104可以是有线和/或无线网络。
示例性编码装置
参考图2,示出了示例性编码装置200的若干组件。在一些实施方式中,编码装置可以包括比图2所示更多的组件。然而,为了公开说明性的实施方式,不一定示出所有这些一般常规的组件。如图2所示,示例性编码装置200包括用于连接到网络(例如,网络104)的网络接口204。示例性编码装置200还包括处理单元208、存储器212、任选的用户输入214(例如,字母数字键盘、小键盘、鼠标或其它指示装置、触摸屏和/或麦克风)和任选的显示器216,全部通过总线220与网络接口204互连在一起。存储器212通常包括RAM、ROM和诸如盘驱动器、闪存等的永久大容量存储装置。
示例性编码装置200的存储器212存储操作系统224以及用于多个软件服务的程序代码,例如软件实现的帧间视频编码器400(下面参考图4描述),其具有用于执行运动矢量选择例程600(下面参考图6描述)的指令。存储器212还可以存储视频数据文件(未示出),其可以表示音频/视频媒体作品(例如,电影和/或电视剧集)的未编码副本。这些和其它软件组件可以通过使用与诸如软盘、磁带、DVD/CD-ROM驱动器、存储卡等非暂时计算机可读介质232相关联的驱动机构(未示出)被加载到编码装置200的存储器212中。尽管已经描述了示例性编码装置200,但是编码装置可以是能够与网络120通信且执行用于实现视频编码软件的指令的大量联网计算装置中的任一种,例如,示例性软件实现的视频编码器400和运动矢量选择例程600。
在操作中,操作系统224管理编码装置200的硬件和其它软件资源,并且为诸如软件实现的帧间视频编码器400的软件应用提供常用服务。对于诸如经由网络接口204的网络通信、经由输入214接收数据、经由显示器216输出数据以及为诸如软件实现的帧间视频编码器400的各种软件应用的分配存储器212的硬件功能,操作系统224充当在编码装置上执行的软件与硬件之间的中介。
在一些实施方式中,编码装置200还可以包括用于与诸如高速串行总线等未编码视频源108通信的专用未编码视频接口236。在一些实施方式中,编码装置200可以经由网络接口204与未编码视频源108通信。在其它实施方式中,未编码视频源108可以驻留在存储器212或计算机可读介质232中。
虽然已经描述了总体上符合常规通用计算装置的示例性编码装置200,但是编码装置200可以是能够实现编码视频的大量装置中的任一种,例如,视频记录装置、视频协处理器和/或加速器、个人计算机、游戏机、机顶盒、手持或可佩带式计算装置、智能手机或任何其它合适的装置。
作为示例,编码装置200可以进一步在点播媒体服务(未示出)中操作。在至少一个示例性实施方式中,点播媒体服务可以进一步是在线点播媒体商店中的操作的编码装置200,其在每个作品和/或每项订阅的基础上向用户提供诸如视频内容的媒体作品的数字副本。点播媒体服务可以从未编码视频源108获得这种媒体作品的数字副本。
示例性解码装置
参考图3,示出了示例性解码装置300的若干组件。在一些实施方式中,解码装置可以包括比图3所示更多的组件。然而,为了公开说明性的实施方式,不一定示出所有这些一般常规的组件。如图3所示,示例性解码装置300包括用于连接到网络(例如,网络104)的网络接口304。示例性解码装置300还包括处理单元308、存储器312、任选的用户输入314(例如,字母数字键盘、小键盘、鼠标或其它指示装置、触摸屏和/或麦克风)、任选的显示器316和任选的扬声器318,全部通过总线320与网络接口304互连在一起。存储器312通常包括RAM、ROM和诸如盘驱动器、闪存等的永久大容量存储装置。
示例性解码装置300的存储器312可以存储操作系统324以及用于多个软件服务的程序代码,例如软件实现的视频解码器500(下面参考图5描述),其具有用于执行运动矢量恢复例程800(下面参考图8描述)的指令。存储器312还可以存储视频数据文件(未示出),其可以表示音频/视频媒体作品(例如,电影和/或电视剧集)的编码副本。这些和其它软件组件可以使用与诸如软盘、磁带、DVD/CD-ROM驱动器、存储卡等非暂时计算机可读介质332相关联的驱动机构(未示出)被加载到解码装置300的存储器312中。尽管已经描述了示例性解码装置300,但是解码装置可以是能够与网络(例如,网络120)通信且执行用于实现视频解码软件的指令的大量联网计算装置中的任一种,例如,示例性软件实现的视频解码器500和伴随消息提取例程700。
在操作中,操作系统324管理解码装置300的硬件和其它软件资源,并且为诸如软件实现的视频解码器500的软件应用提供常用服务。对于诸如经由网络接口304的网络通信、经由输入314接收数据、经由显示器316和/或任选的扬声器318输出数据以及分配存储器312的硬件功能,操作系统324充当在编码装置上执行的软件与硬件之间的中介。
在一些实施方式中,解码装置300还可以包括任选的编码视频接口336,例如用于与诸如高速串行总线等的编码视频源116通信。在一些实施方式中,解码装置300可以经由网络接口304与编码视频源(例如,编码视频源116)通信。在其它实施方式中,编码视频源116可以驻留在存储器312或计算机可读介质332中。
虽然已经描述了总体上符合常规通用计算装置的示例性解码装置300,但是解码装置300可以是能够实现解码视频的大量装置中的任一种,例如视频记录装置、视频协处理器和/或加速器、个人计算机、游戏机、机顶盒、手持或可佩带式计算装置、智能手机、或任何其它合适的装置。
作为示例,解码装置300可以以促进点播媒体服务的方式操作。在至少一个示例性实施方式中,点播媒体服务可以在每个作品和/或每项订阅的基础上向用户操作的解码装置300提供诸如视频内容的媒体作品的数字副本。解码装置可以经由网络104经由例如解码装置200从未编码视频源108获得这种媒体作品的数字副本。
软件实现的帧间视频编码器
图4示出了根据至少一个实施方式的采用残差变换技术的软件实现的帧间视频编码器400(下文称为“编码器400”)的总体功能框图。按显示顺序的视频序列的一个或多个未编码视频帧(vidfrms)可以被提供给定序器404。
定序器404可以将预测编码图片类型(例如,I、P或B)指派给每个未编码视频帧,并且将帧序列或来自帧序列的帧组重新排序成用于运动预测目的的编码顺序(例如,I型帧后跟着P型帧、P型帧后跟着B型帧)。然后将有序的未编码视频帧(seqfrms)按编码顺序输入到块索引器408。
对于每个有序的未编码视频帧(seqfrms),块索引器408可以确定当前帧的最大编码块(“LCB”)大小(例如,64×64像素),并将未编码的帧划分成编码块阵列(blcks)。给定帧内的各个编码块的大小可以变化,例如从4×4像素到当前帧的LCB大小。
然后,每个编码块可以一次一个地输入到差分器412,并且可以与从先前编码的编码块生成的对应的预测信号块(pred)进行差分运算。为了生成预测块(pred),编码块(blcks)也被提供给帧内预测器444和运动估计器416。在差分器412处的差分运算之后,变换器420(如下讨论的)可以将得到的残差块(res)正向变换为频域表示,从而得到变换系数块(tcof)。然后可以将变换系数块(tcof)发送给量化器424,得到量化系数块(qcf),然后可以将量化系数块(qcf)发送到熵编码器428和本地解码环路430。
对于帧内编码的编码块,帧内预测器444提供表示当前编码块的相同帧的先前编码区域的预测信号。对于帧间编码的编码块,运动补偿预测器442提供表示当前编码块的不同帧的先前编码区域的预测信号。
在本地解码环路430的开始,逆向量化器432可以对变换系数块(cf')进行去量化并将其传递给逆向变换器436以生成去量化的残差块(res')。在加法器440处,可以将来自运动补偿预测器442或帧内预测器444的预测块(pred)添加到去量化的残差块(res')以生成本地解码块(res)。然后可以将本地解码快(rec)发送到帧组装器和去块滤波处理器444,其减少块效应并组装恢复的帧(recd),恢复的帧(recd)可以用作运动估计器416和运动补偿预测器442的参考帧。
熵编码器428对量化的变换系数(qcf)、差分运动矢量(dmv)和其它数据进行编码,从而生成编码的视频位流448。对于未编码的视频序列的每一帧,编码的视频位流448可以包括编码的图片数据(例如,编码的量化变换系数(qcf)和差分运动矢量(dmv))和编码的帧头(例如,语法信息,例如当前帧的LCB大小)。
软件实现的帧间解码器
图5示出了根据至少一个实施方式的且适用于诸如解码装置300的解码装置的相应的软件实现的帧间视频解码器500(下文称为“解码器500”)逆向残差变换技术的总体功能框图。解码器500可以与编码器400处的本地解码环路455类似地工作。
具体地,可以将待解码的编码的视频位流504提供给熵解码器508,熵解码器508可以解码出量化系数(qcf)、差分运动矢量(dmv)、伴随的消息数据包(msg数据)以及包括预测模式(帧内或帧间)的其它数据的块。量化系数块(qcf)然后可以由逆向量化器512重组,从而得到恢复的变换系数块(tcof')。恢复的变换系数块(tcof')然后可以由逆向变换器516(如下所述)从频域中逆向变换,从而得到解码的残差块(res')。加法器520可以将通过使用相应的运动矢量(dmv)从运动补偿预测器528获得的运动补偿预测块(psb)相加。所得到的解码视频(dv)可以在帧组装器和去块滤波处理器524中被去块滤波。在帧组装器和去块滤波处理器524的输出处的块(recd)形成视频序列的重建帧,其可以从解码器500输出并且还可以用作用于解码后续编码块的运动补偿预测器528的参考帧。
递归编码块划分方案
图6出了根据各个实施方式的可以由编码器400实现的示例性递归编码块划分方案600。在块索引器408处,在帧被划分成LCB大小的像素区域(下面称为编码块候选项(“CBC”))之后,每个LCB大小的编码块候选项(“LCBC”)可以根据递归编码块划分方案600被划分成更小的CBC。这个过程可以递归地继续直到块索引器408确定(1)当前CBC适合编码(例如,因为当前CBC仅包含单个值的像素)或者(2)当前CBC是用于具体实现的编码块候选项的最小大小例如2×2、4×4等(“MCBC”),不管哪个先发生都一样。然后块索引器408可以将当前CBC标引成适于编码的编码块。
正方形CBC 602(例如,LCBC)可以沿垂直和水平横轴604、606中的一个或两个被划分。沿垂直横轴604的划分将正方形CBC 602垂直划分成第一长方形编码块结构608,如长方形(1:2)CBC 610和612所示。沿水平横轴606的划分将正方形CBC 602水平划分成第二长方形编码结构614,如长方形(2:1)CBC 616和618合起来所示。
第一长方形编码结构614的长方形(2:1)CBC(例如,CBC 616)可以被划分成两长方形编码块结构648,如长方形CBC 650和652合起来所示。
沿水平和垂直横轴604、606的划分将正方形CBC 602划分成四正方形编码块结构620,如正方形CBC 622、624、626和628合起来所示。
第一长方形编码块结构608的长方形(1:2)CBC(例如,CBC 612)可以沿水平横轴630被划分成第一个两正方形编码块结构632,如正方形CBC 634和636合起来所示。
第二长方形编码结构614的长方形(2:1)CBC(例如,CBC 618)可以被划分成第二个两正方形编码块结构638,如正方形CBC 640和642合起来所示。
四正方形编码块结构620、第一个两正方形编码块结构632或第二个两正方形编码块结构638的正方形CBC可以用与CBC 602相同的方式沿编码块的垂直和水平横轴中的一个或两个被划分。
例如,64×64位LCBC大小的编码块可以被划分成2个32×64位编码块、2个64×32位编码块、或4个32×32位编码块。
在编码位流中,2位编码块划分标志可以用于指示当前编码块是否被进一步划分:
Figure BDA0002266339050000111
编码块树划分程序
图7A至图7C示出了将编码块划分方案600应用于“根”LCBC 702的示例性编码块树划分程序700。图7A示出了由编码块树划分程序700创建的各个子编码块704至754;图7B示出了作为树数据结构的编码块树划分程序,其显示了各个编码块702至754之间的父/子关系;图7C示出了图7B的位于根编码块702的配置内的各自位置的各种“叶节点”子编码块(如虚线所指示的)。
假设64×64 LCBC 702不适于编码,那么它可以被划分成递归编码块划分方案600(上面参考图6描述)的第一长方形编码块结构608、第二长方形编码结构614或四正方形编码块结构620。对于此示例,假设64×64 LCBC 702被划分成2个32×64位子编码块候选项即32×64 CBC 704和32×64 CBC 706。然后这些子CBC中的每个可以依次被处理。
假设64×64 LCBC 702的第一子32×64 CBC 704不适于编码,则它可以被划分成2个子32×32编码块候选项即32×32 CBC 708和32×32 CBC 710。然后这些子CBC中的每个可以依次被处理。
假设32×64 LCBC 704的第一子32×32 CBC 708不适于编码,则它可以被划分成2个子16×32编码块候选项即16×32 CBC 712和16×32 CBC 714。然后这些子CBC中的每个可以依次被处理。
编码器400可以确定32×32 CBC 708的第一子16×32 CBC 712适于编码;因此编码器400可以将16×32 CBC 712标引为编码块713并返回父32×32 CBC 708以处理其下一子(如果有的话)。
假设32×32 CBC 708的第二子16×32 CBC 714不适于编码;它可以被划分成2个16×16 CBC即16×16 CBC 716和16×16 CBC 718。然后这些子CBC中的每个可以依次被处理。
假设16×32 CBC 714的第一子16×16 CBC 716不适于编码,它可以被划分成2个8×16 CBC即8×16 CBC 720和8×16 CBC 722。然后这些子CBC中的每个可以依次被处理。
编码器400可以确定16×16 CBC 716的第一子8×16 CBC 720适于编码;因此编码器400可以将8×16 CBC 720标引为编码块721并返回父16×16 CBC 716以处理其下一子(如果有的话)。
编码器400可以确定16×16 CBC 716的第二子8×16 CBC 722适于编码;因此编码器400可以将8×16 CBC 722标引为编码块723并返回父16×16 CBC 716以处理其下一子(如果有的话)。
现在16×16 CBC 716的所有子已被处理,得到8×16编码块721和723的标引。因此,编码器400可以返回父16×32 CBC 714以处理其下一子(如果有的话)。
假设16×32 CBC 714的第二子16×16 CBC 718不适于编码,它可以被划分成2个8×16编码块候选项即8×16 CBC 724和8×16 CBC 726。然后这些子CBC中的每个可以依次被处理。
假设16×16 CBC 718的第一子8×16 CBC 724不适于编码,它可以被划分成2个8×8编码块候选项即8×8 CBC 728和8×8 CBC 730。然后这些子CBC中的每个可以依次被处理。
编码器400可以确定8×16 CBC 724的第一子8×8 CBC 728适于编码;因此编码器400可以将8×8 CBC 728标引为编码块729然后返回父8×16 CBC 724以处理其下一子(如果有的话)。
编码器400可以确定8×16 CBC 724的第二子8×8 CBC 730适于编码,因此编码器400可以将8×8 CBC 730标引为编码块731然后返回父8×16 CBC 724以处理其下一子(如果有的话)。
现在8×16 CBC 724的所有子已被处理,得到8×8编码块729和731的标引。因此,编码器400返回父16×16 CBC 718以处理其下一子(如果有的话)。
编码器400可以确定16×16 CBC 718的第二子8×16 CBC 726适于编码;因此编码器400可以将8×16 CBC 726标引为编码块727然后返回父16×16 CBC 718以处理其下一子(如果有的话)。
现在16×16 CBC 718的所有子已被处理,得到8×8编码块729、731和8×16编码块727的标引。因此编码器400可以返回父16×32CBC 714以处理其下一子(如果有的话)。
现在16×32 CBC 714的所有子已被处理,得到8×8编码块729、731、8×16编码块721、723、727的标引。因此编码器400可以返回父32×32 CBC 708以处理其下一子(如果有的话)。
现在32×32 CBC 708的所有子已被处理,得到8×8编码块729、731、8×16编码块721、723、727、16×32编码块713的标引。因此编码器400可以返回父32×64 CBC 704以处理其下一子(如果有的话)。
编码器400可以确定32×64 CBC 704的第二子32×32 CBC 710适于编码;因此编码器400可以将32×32 CBC 710标引为编码块711然后返回父32×64 CBC 704以处理其下一子(如果有的话)。
现在32×64 CBC 704的所有子已被处理,得到8×8编码块729、731、8×16编码块721、723、727、16×32编码块713和32×32编码块711的标引。因此编码器400可以返回父、根64×64 LCBC 702以处理其下一子(如果有的话)。
假设64×64 LCBC 702的第二子32×64 CBC 706不适于编码,它可以被划分成2个32×32编码块候选项即32×32 CBC 732和32×32 CBC 734。然后这些子CBC中的每个可以依次被处理。
假设32×64 LCBC 706的第一子32×32 CBC 732不适于编码,它可以被划分成2个32×16编码块候选项即32×16 CBC 736和32×16 CBC 738。然后这些子CBC中的每个可以依次被处理。
编码器400可以确定32×32 CBC 732的第一子32×16 CBC 736适于编码;因此编码器400可以将32×16 CBC 736标引成编码块737然后返回父32×32 CBC 732以处理其下一子(如果有的话)。
编码器400可以确定32×32 CBC 732的第二子32×16 CBC 738适于编码;因此编码器400可以将32×16 CBC 738标引成编码块739然后返回父32×32 CBC 732以处理其下一子(如果有的话)。
现在32×32 CBC 732的所有子已被处理,得到32×16编码块737、739的标引。因此编码器400可以返回父32×64 CBC 706以处理其下一子(如果有的话)。
假设32×64 CBC 706的第二子32×32 CBC 734不适于编码,它可以被划分成4个16×16编码块候选项即16×16 CBC 740、16×16 CBC 742、16×16 CBC 744和16×16 CBC746。然后这些子CBC中的每个可以依次被处理。
编码器400可以确定32×32 CBC 734的第一子16×16 CBC 740适于编码;因此编码器400可以将16×16 CBC 740标引成编码块741然后返回父32×32 CBC 734以处理其下一子(如果有的话)。
编码器400可以确定32×32 CBC 734的第二子16×16 CBC 742适于编码;因此编码器400可以将16×16 CBC 742标引成编码块743然后返回父32×32 CBC 734以处理其下一子(如果有的话)。
假设32×32 CB的第三子16×16 CBC 744不适于编码,它可以被划分成4个编码块候选项即8×8 CBC 748、8×8 CBC 750、8×8 CBC 752和8×8 CBC 754。然后这些子CBC中的每个可以依次被处理。
编码器400可以确定16×16 CBC 744的第一子8×8 CBC 748适于编码;因此编码器400可以将8×8 CBC 748标引成编码块749然后返回父16×16 CBC 744以处理其下一子(如果有的话)。
编码器400可以确定16×16 CBC 744的第二子8×8 CBC 750适于编码;因此编码器400可以将8×8 CBC 750标引成编码块751然后返回父16×16 CBC 744以处理其下一子(如果有的话)。
编码器400可以确定16×16 CBC 744的第三子8×8 CBC 752适于编码;因此编码器400可以将8×8 CBC 752标引为编码块753然后返回父16×16 CBC 744以处理其下一子(如果有的话)。
编码器400可以确定16×16 CBC 744的第四子8×8 CBC 754适于编码;因此编码器400可以将8×8 CBC 754标引为编码块755然后返回父16×16 CBC 744以处理其下一子(如果有的话)。
现在16×16 CBC 744的所有子已被处理,得到8×8编码块749、751、753和755。因此编码器400可以返回父32×32 CBC 734以处理其下一子(如果有的话)。
编码器400可以确定32×32 CBC 734的第四子16×16 CBC 746适于编码;因此编码器400可以将16×16 CBC 746标引为编码块747然后返回父32×32 CBC 734以处理其下一子(如果有的话)。
现在32×32 CBC 734的所有子已被处理,得到16×16编码块741、743、747和8×8编码块749、751、753、755的标引。因此编码器400可以返回父32×64 LCBC 706以处理其下一子(如果有的话)。
现在32×64 CBC 706的所有子已被处理,得到32×16编码块737、739;16×16编码块741、743、747和8×8编码块749、751、753和755。因此编码器400可以返回父、根64×64LCBC 702以处理其下一子(如果有的话)。
现在64×64 LCBC 702的所有子已被处理,得到8×8编码块729、731、749、751、753、755;8×16编码块721、723、727;16×32编码块713、32×32编码块711;32×16编码块737、739;以及16×16编码块741、743、747的标引。因此编码器400可以进行到帧的下一LCBC(如果有的话)。
帧间编码模式
一般地参考图1至图6,对于以帧间编码模式被编码的编码块,运动估计器416可以将每个编码块划分成一个或多个预测块,例如具有例如4×4像素、8×8像素、16×16像素、32×32像素或64×64像素的大小的预测块。例如,64×64编码块可以被划分成16个16×16预测块、4个32×32预测块、或2个32×32预测块和8个16×16预测块。运动估计器416然后可以通过识别合适的参考块和确定预测块与参考块的相对空间位移来计算每个预测块的运动矢量(MVcalc)。
根据至少一个实施方式的一个方面,为了提高编码效率,可以通过从计算的运动矢量(MVcalc)减去运动矢量预测子(MVpred)来获得运动矢量差(ΔMV),进而对计算的运动矢量(MVcalc)进行编码。例如,如果计算的运动矢量(MVcalc)是(5,-1)(即,位于当前帧中当前预测块的右5列上一行中的先前编码帧的参考块)且运动矢量预测子是(5,0)(即,位于当前帧中当前预测块的右5列同一行中的先前编码帧的参考块),则运动矢量差(ΔMV)为:
MVcalc-MVpred=(5,-1)-(5,0)=(0,-1)=ΔMV。
运动矢量预测子(MVpred)离计算的运动矢量(MVcalc)越近,运动矢量差(ΔMV)的值越小。因此,独立于当前预测块内容且在解码器侧可重复的精确的运动矢量预测可能导致在整个视频序列上,编码运动矢量差所需的信息显著少于编码计算的运动矢量所需的信息。
根据至少一个实施方式的一个方面,运动估计器416可以使用多种技术获得运动矢量预测子(MVpred)。例如,可以通过计算当前帧的预测块的若干先前编码的运动矢量的中值来获得运动矢量预测子。例如,运动矢量预测子可以是当前预测块的空间附近的多个先前编码的参考块的中值,例如当前块的同一列上一行中的参考块(RBa)的运动矢量、当前预测块的右一列上一行中的参考块(RBb)的运动矢量、以及当前块的左一列同一行中的参考块(RBc)的运动矢量。
如上所述,根据至少一个实施方式的一个方面,运动估计器416可以使用附加的或替代的技术来提供帧间编码模式的预测块的运动矢量预测子。例如,用于提供运动矢量预测子的另一技术可以是确定当前预测块的空间附近的多个先前编码的参考块的均值:例如,当前块的同一列上一行中的参考块(RBa)的运动矢量、当前预测块的右一列上一行中的参考块(RBb)的运动矢量、以及当前块的左一列同一行中的参考块(RBc)的运动矢量。
根据至少一个实施方式的一个方面,为了提高编码效率,编码器400可以通过设置当前帧的图片头(或当前预测块的预测块头)中的所选运动矢量预测方法(SMV-PM)标志来指示在当前预测块的编码中使用可用技术中的哪种技术。例如,在至少一个实施方式中,SMV-PM标志可以是具有两个可能值的1位变量,其中一个可能值指示如上所述使用中值技术获得运动矢量预测器,第二个可能值指示使用替代的技术获得运动矢量预测子。
在以帧间编码模式编码的编码块中,运动矢量和残差可以被编码成位流。
跳过编码模式和直接编码模式
对于以跳过编码模式或直接编码模式被编码的编码块,运动估计器416可以使用整个编码块作为相应的预测块(PB)。
根据至少一个实施方式的一个方面,在跳过编码模式和直接编码模式中,不是为预测块(PB)确定计算的运动矢量(MVcalc),而是运动估计器416可以使用下面描述的预定义方法生成运动矢量候选项的有序列表。例如,对于当前预测块(PBcur),运动矢量候选项的有序列表可以由先前用于编码当前帧的被称为“参考块”(PB)的其它块的运动矢量构成。
根据至少一个实施方式的一个方面,运动估计器416然后可以从有序列表中选择最佳运动矢量候选项(MVC)用于对当预测块(PBcur)编码。如果生成运动矢量候选项的有序列表的过程在解码器侧可重复,则在编码位流中可仅包括运动矢量候选项的有序列表内的所选运动矢量(MVsel)的索引,而不包括本身的运动矢量。在整个视频序列中,编码索引值所需的信息可显著少于编码实际运动矢量所需的信息。
根据至少一个实施方式的一个方面,被选择填充运动矢量候选项列表的运动矢量优选地来自具有已知运动矢量并共享边界当前预测块(PBcur)和/或另一参考块(PB)的3个参考块(RBa,RBb,RBc)。例如,第一参考块(RBa)可以直接位于当前预测块(PBcur)上面,第二参考块(RBb)可以直接位于第一参考块(RBa)右侧,第三参考块(RBc)可以位于当前预测块(RBc)左侧。然而,参考块相对于当前预测块的具体位置可能并不重要,只要它们被预定义,使得下游解码器可以知道它们的位置。
根据至少一个实施方式的一个方面,如果所有3个参考块具有已知的运动矢量,则用于当前预测块(PBcur)的运动矢量候选项列表中的第一运动矢量候选项(MVC1)可以是来自第一参考块(PBa)的运动矢量(MVa)(或B型帧中的多个运动矢量),第二运动矢量候选项(MVC2)可以是来自第二参考块(RBb)的运动矢量(MVb)(或多个运动矢量),第三运动矢量候选项(MVC3)可以是来自第三参考块(RBc)的运动矢量(MVc)(或多个运动矢量)。因此运动矢量候选项列表可以是:(MVa,MVb,MVc)。
然而,如果参考块(PBs)中的任一个不具有可用的运动矢量,例如因为对于给定的参考块而言无预测信息可用或当前预测块(PBcur)位于当前帧的第一行、最左列、或最右列,则运动矢量候选项可以被跳过且下一运动矢量候选项可以取而代之,并且零值运动矢量(0,0)可以被其余候选项等级取代。例如,如果对于PBb而言无运动矢量可用,则运动矢量候选项列表可以是:(MVa,MVc,(0,0))。
根据至少一个实施方式,假定运动矢量候选项可用性的各种组合下完整的运动矢量候选项列表组合集在表2中示出:
Figure BDA0002266339050000191
表2
运动估计器416然后可以计算运动矢量候选项并选择最佳运动矢量候选项用作当前预测块的所选运动矢量。注意,只要下游解码器知道如何填充用于给定预测块的运动矢量候选项的有序列表,则此计算可以在解码器侧重复且不需要了解当前预测块的内容。因此,例如通过设置当前预测块的预测块头中的运动矢量选择标志,在编码位流中仅需要包括来自运动矢量候选项列表的所选运动矢量的索引而不包括运动矢量本身,因此在整个视频序列中编码索引值所需的信息显著少于编码实际运动矢量所需的信息。
在直接编码模式中,运动矢量选择标志以及当前预测块与由运动矢量指示的参考帧的块之间的残差被编码。在跳过编码模式中,运动矢量选择标志被编码,但是残差信号的编码被跳过。本质上,这说明下游解码器使用由运动矢量指示的参考帧的块代替当前帧的当前预测块。
压缩编码块头技术
参考图8,根据至少一个实施方式,编码器(例如,编码器400)可以在至少两个输出位流格式之间选择:非压缩头格式800A和压缩头格式800B。
在非压缩头格式800A中,与整个帧对应的位流803可以按顺序包括:图片头805A、帧的第一编码块的第一编码块头806A、与帧的第一编码块的图像数据对应的第一残差数据块808A、第二编码块的第二编码块头806B、与第二编码块的图像数据对应的第二残差数据块808B、第三编码块的第三编码块头806C、与第三编码块的图像数据对应的第三残差数据块808C等。
图片头805A可以包含与用于解码整个帧的下游解码器(例如,解码器500)相关的信息,例如,指示当前帧的LCB大小的LCB大小码字(或标志)(未示出)、指示预测信号关于当前帧起源的时间方向的预测方向码字。例如,LCB大小码字可以具有两个可能值,其中第一个值指示64×64位的LCB大小、第二个值指示128×128位的LCB大小,预测方向码字可以具有3个可能值,其中第一个值指示双向预测信号、第二个值指示来自时间上先前图片的预测信号、第三个值指示用于时间上未来图片的预测信号。
类似地,每个编码块头806可以包含与用于解码即将到来的编码块808的下游解码器(例如,解码器500)相关的信息。例如,编码块头可以包括与编码块的划分标志相关的码字、编码模式/编码块类型、预测信息、运动信息等。
在压缩头格式800B中,如非压缩头格式800A,与整个帧对应的位流809可以按顺序包括:图片头805B、包括帧的所有编码块的所有头信息的压缩编码块头810、包括帧的所有图像数据的压缩残差数据块813。
图片头805B中的压缩头码字815可以用于告知解码器希望使用哪个位流格式,压缩或非压缩。例如,压缩头码字815可以具有两个可能值,其中第一个值指示使用压缩头格式800B对即将到来的位流编码,第二个值指示使用非压缩头格式800A对即将到来的位流编码。压缩头格式800B的帧的编码块头数据的邻接允许不能在非压缩头格式800A中应用的各种压缩技术被应用于块头数据,由此提高整个编码过程的效率。
信道编码通常将一些保护位添加到位流。一般地,保护位将被平均地分配到图片头和位流的其它位。然而,在使用压缩头信息时,较多的保护位将被分配到图片头和压缩头,较少的保护位将被分配到位流中的其它位。
图9A示出了部分视频帧900A的概念图,其包括根据上述的递归编码块划分方案被划分成多个编码块CB0至CB15的视频帧的LCB大小部分。假设本示例的LCB大小为64×64,部分视频帧900A的4个LCB大小部分被划分成6个32×32编码块(CB0至CB2、CB8至CB9和CB14)903A至903F、8个16×16编码块(CB3至CB6和CB10至CB13)905A至905H、以及两个64×64(LCB大小的)编码块(CB7和CB15)908A至908B,如表3所示。
图9B示出了编码版本的部分视频帧900A的基于编码顺序的序列900B的概念图,其可以适于与上面参考图8描述的非压缩头格式一起使用。部分视频帧900A的每个编码的编码块CB0至CB15具有基于编码顺序的序列900B中的相应编码块头部分(H)910和数据部分(D)913。注意,图9B中所示的示例中的每个编码的编码块头部分910和数据部分913的一致宽度仅为了简化说明。
Figure BDA0002266339050000211
Figure BDA0002266339050000221
图9C示出了编码版本的部分视频帧900A的基于编码块大小顺序的序列900C的概念图,其适于与上面参考图8描述的压缩头格式一起使用。在基于编码块大小顺序的序列900C中每个编码块CB0至CB15的头信息被置于包括每个编码块CB0至CB15的编码块头信息的压缩头部分(BH)915以及包括每个编码块CB0至CB15的图像数据的组合数据部分(CD)918中。
当使用压缩头格式时,可以使用各种技术提高编码效率。可以将不同的技术应用于编码块头数据的不同成员,相应的编码块头码字/标志可以用于指示将哪种技术用于下游解码器。例如,可以使用各种已知的无损编码技术对编码块头数据的各个部分编码,例如运行长度编码算法、LZ77算法、LZ78算法、Lempel-Ziv-Markov链算法等。
例如在各个实施方式中,可以使用固定长度编码技术或变化长度编码技术对单独编码块(例如,使用帧内预测、帧间预测、跳过编码模式、或直接编码模式编码的编码块)的编码块类型信息编码,如表4所示,然后可以使用运行长度编码技术对编码块序列的编码块类型信息编码。对于编码块序列中的每个编码块类型,压缩编码块头可以包含有序对序列,每个有序对的第一个元祖是编码块类型码字(对应于帧内、帧间、跳过或直接)且例如可以使用固定或变化长度编码进行编码,每个有序对的第二元祖是编码块类型的连续编码块数且例如可以使用指数-哥伦布编码技术等进行编码。
Figure BDA0002266339050000222
在一些实施方式中,可以使用运行长度编码对与压缩编码块头中的编码块序列的编码模式/编码块类型对应的数据进行编码。
例如,位流中的10个编码块的序列可以具有表5中所示的相关联的编码块类型。压缩编码块头中的编码块CBi至CBi+9的编码块类型数据可以由表6中所示的位序列表示。
Figure BDA0002266339050000231
Figure BDA0002266339050000232
视频编码例程
图10A至图10B示出了根据各个实施方式的例如可以由编码器400执行的示例性视频编码例程1000。视频编码例程1000有意地简化编码过程以将描述集中在上述的递归编码块划分技术和压缩编码块头格式化。
参考图10A,视频编码例程1000可以在执行框1002处获得视频序列。视频序列可以包括与多个编码的视频帧对应的数据。
在开始环路1004处,视频编码例程1000可以依次处理视频序列的每个帧。
视频编码例程1000可以在执行框1006处将帧划分成LCB大小的编码块候选项(“LCBCs”)。
在开始环路框1008处,视频编码例程1000可以依次处理每个LCBC,例如从帧的左上角的LCBC开始并从左到右、从上到下进行。
在子例程框1100处,视频编码例程1000可以调用下面参考图11描述的编码块划分子例程1100。如下面所描述的,子例程1100将下面描述的递归编码块划分技术应用于给定的LCBC,得到被编索引成一个或多个编码块的LCBC。
在结束环路框1010处,视频编码例程1000循环回开始环路框1008以处理当前帧的下一LCBC(如果有的话)。
在开始环路框1012处,视频编码例程1000可以依次处理视频序列的当前帧的每个索引的编码块。
视频编码例程1000可以在执行框1014处为当前编码块选择编码模式(帧内/帧间)。
在判定框1016处,如果为当前编码块选择的编码模式是帧间编码,则视频编码例程1000可以进入子例程框1200;否则视频编码例程1000可以进入执行框1018。
在子例程框1200处,视频编码例程1000可以调用下面参考图12描述的运动矢量选择子例程1200。
视频编码例程1000可以在执行框1018处对当前编码块进行帧内编码。
例程1100可以在执行框1014处对当前编码块编码。
在结束环路框1020处,视频编码例程1000可以循环回开始环路框1012并处理当前帧的下一索引的编码块(如果有的话)。
现在参考图10B,视频编码例程1000可以在执行框1022处通过使用上面描述的非压缩编码块头格式确定用于对视频序列的当前帧编码的输出位计数。
视频编码例程1000可以在执行框1024处通过使用上面描述的压缩编码块头格式确定用于对视频序列的当前帧编码的输出位计数。
视频编码例程1000可以在执行框1026处比较使用非压缩头格式的位计数与使用压缩头格式的位计数。
在判定框1028处,如果使用压缩头格式对当前帧编码比使用非压缩头格式对当前帧编码更高效,则视频编码例程1000可以进入执行框1030;否则,视频编码例程1000可以进入执行框1036。
视频编码例程1000可以在执行框1030处在当前帧的图片头中将压缩编码块头标志的值设为“真”。
视频编码例程1000可以在执行框1032处为与当前帧的编码块对应的编码块类型数据选择固定长度编码或变化长度编码。
视频编码例程1000可以在执行框1034处提供与当前帧对应的压缩编码块头格式化位流。
视频编码例程1000可以在执行框1036处在当前帧的图片头中将压缩编码块头标志的值设为“假”。
视频编码例程1000可以在执行框1038处提供与当前帧对应的非压缩编码块头格式化位流。
在结束环路框1038处,视频编码例程1000可以循环回开始环路框1004以处理视频序列的下一帧(如果有的话)。
编码块索引视频编码例程1000在返回框1099处结束。
编码块划分子例程
图11示出了根据各个实施方式的例如响应于来自视频编码例程1000的调用或响应于来自编码块划分例程1100的另一实例的递归调用的例如可以由编码器(例如,编码器400)执行的示例性编码块划分子例程1100。
编码块划分子例程1100在执行框1102处获得CBC。编码块候选项可以如下面描述从例程1400或递归地被提供。
在判定框1104处,如果获得的CBC是MCBC,则编码块划分子例程1100可以进入执行框1106;否则编码块划分子例程1100可以进入执行框1108。
编码块划分子例程1100可以在执行框1106处将获得的CBC编索引成编码块。编码块划分子例程1100然后可以在返回框1198处终止。
编码块划分子例程1100可以在执行框1108处测试当前CBC的编码适用性。例如,编码块划分子例程1100可以分析当前CBC的像素值并确定当前CBC是否仅包含单个值的像素、或当前CBC是否与预定图案匹配。
在判定框1110处,如果当前CBC适于编码,则编码块划分子例程1100可以进入执行框1106;否则编码块划分子例程1100可以进入判定框1114。
编码块划分子例程1100可以在执行框1114处为当前正方形CBC选择编码块划分结构。例如,编码块划分子例程1100可以在如上参考图11描述的递归编码块划分方案1100的第一长方形编码块结构1108、第二长方形编码结构1114、或四正方形编码块结构1120之间选择。
编码块划分子例程1100可以在执行框1116处根据递归编码块划分方案1100将当前CBC划分成两个或四个子CBC。
在开始环路框1118处,编码块划分子例程1100可以依次处理从执行框1116的划分程序得到的每个子CBC。
在子例程框1100处,编码块划分子例程1100可以递归地调用自身以用目前描述的方式处理当前子CBC。
在结束环路框1120处,编码块划分子例程1100循环回开始环路框1118以处理当前CBC的下一子CBC(如果有的话)。
编码块划分子例程1100然后可以在返回框1199处终止。
运动矢量选择例程
图12示出了适于与视频编码器(例如,编码器400)一起使用的运动矢量选择子例程1200。本领域技术人员将认识到,并非编码过程中的所有事件都在图12中示出。相反,为了清楚起见,仅示出了与描述运动矢量选择例程相关的那些步骤。
在执行框1202处,例如通过运动估计器416获得编码块。
在判定框1204处,运动矢量选择子例程1200为编码块选择编码模式。例如,如上所述,可以选择帧间编码模式、直接编码模式、或跳过编码模式。如果为当前编码块选择跳过编码模式或直接编码模式,则运动矢量选择子例程1200可以进入执行框1226(如下所述);否则运动矢量选择子例程1200可以进入执行框1204。
运动矢量选择子例程1200可以在执行框1204处将当前编码块划分成一个或多个预测块。
在开始环路框1206处,运动矢量选择子例程1200可以依次处理当前编码块的每个预测块。
运动矢量选择子例程1200可以在执行框1208处为当前预测块选择预测索引,指示在B型图片的情况下参考帧是先前图片、未来图片、还是两者。
运动矢量选择子例程1200可以在执行框1210处选择运动矢量预测方法,例如上面描述的中值或均值技术或任意可用的替代运动矢量预测方法。
运动矢量选择子例程1200可以在执行框1212处通过使用所选的运动矢量预测方法获得当前预测块的运动矢量预测子(MVpred)。
运动矢量选择子例程1200可以在执行框1214处获得当前预测块的计算的运动矢量(MVcalc)。
运动矢量选择子例程1200可以在执行框1216处获得当前预测块的运动矢量差(ΔMV)(注意,对于P型图片可能存在单个运动矢量差,对于B型图片可能存在两个运动矢量差。)
运动矢量选择子例程1200可以在执行框1218处获得当前预测块(PBcur)与由计算的运动矢量(MVcalc)指示的块之间的残差。
运动矢量选择子例程1200可以在执行框1220处对运动矢量差和当前预测块的残差编码。
运动矢量选择子例程1200可以在执行框1222处设置当前帧的图片头(或当前预测块的预测块头)中的SMV-PM标志,其指示为当前预测块使用哪个运动矢量预测技术。
在结束环路框1224处,运动矢量选择子例程1200返回开始环路框1206以处理当前编码块的下一预测块(如果有的话)。
返回判定框1204,如果为当前编码块选择跳过编码模式或直接编码模式,则运动矢量选择子例程1200可以进入执行框1226。
运动矢量选择子例程1200在执行框1226处设置当前预测块等于当前编码块。
运动矢量选择子例程1200然后可以在执行框1228处生成运动矢量候选项列表。
运动矢量选择子例程1200然后可以在执行框1230处从运动矢量候选项列表选择用于对当前预测块编码的运动矢量。
在判定框1232处,如果所选的编码模式是直接编码,则运动矢量选择子例程1200可以进入执行框1234;否则运动矢量选择子例程1200可以进入执行框1238。
运动矢量选择子例程1200可以在执行框1234处计算当前预测块与由所选运动矢量指示的参考块之间的残差。
运动矢量选择子例程1200可以在执行框1236处对残差编码。
运动矢量选择子例程1200可以在执行框1238处设置当前预测块的预测块头中的运动矢量选择标志,其指示哪个运动矢量候选项被选择用于对当前预测块编码。
运动矢量选择子例程1200在终止框1299处结束。
尽管本文中已经示出和描述了具体的实施方式,但是本领域普通技术人员将理解在不偏离本公开的范围的前提下可以用替代和/或等效的实施方案来取代所示和所描述的具体的实施方式。本申请旨在涵盖本文中讨论的实施方式的任何修改或变化。

Claims (7)

1.一种用于对视频帧序列的未编码视频帧进行编码以生成所述未编码视频帧的编码位流表示的方法,所述未编码视频帧包括像素阵列,所述未编码视频帧的所述编码位流表示至少包括头和视频数据载荷,所述方法包括:
获得所述像素阵列;
沿多个水平轴和多个垂直轴划分所述像素阵列由此限定多个编码块;
为所述多个编码块中的每个编码块生成编码的视频数据和编码块头数据;
确定所述未编码视频帧的所述编码位流表示应该以压缩编码块头格式生成;
通过使用所述多个编码块中的每个编码块的所述视频数据生成所述未编码视频帧的所述编码位流表示的所述视频数据载荷;
通过使用所述多个编码块中的每个编码块的所述编码块头数据生成所述未编码视频帧的所述编码位流表示的所述头的压缩编码块头部分;
生成所述未编码视频帧的所述编码位流表示的所述头的帧头数据部分;以及
其中所述未编码视频帧的所述编码位流表示的所述头的所述帧头数据部分包括压缩头标志,所述压缩头标志的值告知解码装置所述未编码视频帧的所述编码位流表示以压缩编码块头格式生成。
2.如权利要求1所述的方法,其中:
为所述多个编码块中的每个编码块生成编码的视频数据和编码块头数据包括为所述多个编码块中的每个编码块确定编码块类型;
确定所述未编码视频帧的所述编码位流表示应该以压缩编码块头格式生成包括:选择用于对与所述多个编码块中的每个编码块的所述编码块类型对应的数据进行编码的编码技术和使用所述编码技术对与所述多个编码块中的每个编码块的所述编码块类型对应的数据进行编码;以及
所述未编码视频帧的所述编码位流表示的所述头的所述压缩编码块头部分包括编码块类型标志,所述编码块类型标志的值告知解码装置所述未编码视频帧的所述编码位流表示是用选择的编码技术生成的。
3.如权利要求2所述的方法,其中选择用于对与所述多个编码块中的每个编码块的所述编码块类型对应的数据进行编码的编码技术包括:
确定第一值,所述第一值对应于使用固定长度编码技术对与所述多个编码块中的每个编码块的所述编码块类型对应的数据进行编码而生成的所述未编码视频帧的所述编码位流表示的、以位为单位的长度,
确定第二值,所述第二值对应于使用变化长度编码技术对与所述多个编码块中的每个编码块的所述编码块类型对应的数据进行编码而生成的所述未编码视频帧的所述编码位流表示的、以位为单位的长度,以及
比较所述第一值与所述第二值以选择所述编码技术。
4.如权利要求1所述的方法,其中确定所述未编码视频帧的所述编码位流表示应该以压缩编码块头格式生成包括:
确定第一值,所述第一值对应于使用所述压缩编码块头格式对与所述多个编码块中的每个编码块的所述编码块类型对应的数据进行编码而生成的所述未编码视频帧的所述编码位流表示的、以位为单位的长度,
确定第二值,所述第二值对应于使用非压缩编码头格式对与所述多个编码块中的每个编码块的所述编码块类型对应的数据进行编码而生成的所述未编码视频帧的所述编码位流表示的、以位为单位的长度,以及
确定所述第一值小于所述第二值。
5.如权利要求1所述的方法,沿多个水平轴和多个垂直轴划分所述像素阵列由此限定多个编码块包括:
为所述未编码视频帧的所述编码位流表示确定最大编码块大小,所述最大编码块大小包括以像素为单位测量的水平尺寸和以像素为单位测量的垂直尺寸;
沿多个水平轴和多个垂直轴划分所述像素阵列由此限定多个最大大小的编码块,所述多个最大大小的编码块中的每个最大大小的编码块具有所述最大编码块大小;以及
对于所述多个最大大小的编码块中的编码块:
(a)确定所述编码块应该被编码还是被进一步划分;
(b)一旦确定所述编码块应该被编码:
(b.1)创建所述编码块的编码版本;
(b.2)在所述未编码视频帧的所述编码位流表示的所述头中提供所述编码块的所述编码版本被创建的指示;以及
(b.3)在所述未编码视频帧的所述编码位流表示的所述视频数据载荷中提供所述编码块的所述编码版本;
(c)一旦确定所述编码块应该被进一步划分:
(c.1)沿水平横轴和垂直横轴中的至少一个横轴划分所述编码块由此创建多个新的编码块;
(c.2)在所述未编码视频帧的所述编码位流表示的所述头中提供所述编码块被进一步划分的指示;以及
(c.3)对于所述多个新的编码块中的编码块,递归地执行(a)至(c);以及
其中所述未编码视频帧的所述编码位流表示的所述头的所述帧头数据部分包括最大编码块大小标志,所述最大编码块大小标志的值告知解码装置所述未编码视频帧的所述编码位流表示是使用所述最大编码块大小生成的。
6.如权利要求5所述的方法,其中所述最大编码块大小的水平尺寸是64个像素,所述最大编码块大小的所述垂直尺寸是64个像素。
7.如权利要求5所述的方法,其中所述最大编码块大小的水平尺寸是128个像素,所述最大编码块大小的垂直尺寸是128个像素。
CN201780090603.7A 2017-03-15 2017-03-15 视频编码系统和方法中的压缩编码块头 Pending CN110998661A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/076807 WO2018165917A1 (en) 2017-03-15 2017-03-15 Condensed coding block headers in video coding systems and methods

Publications (1)

Publication Number Publication Date
CN110998661A true CN110998661A (zh) 2020-04-10

Family

ID=63522721

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780090603.7A Pending CN110998661A (zh) 2017-03-15 2017-03-15 视频编码系统和方法中的压缩编码块头

Country Status (4)

Country Link
US (1) US11025925B2 (zh)
EP (1) EP3596701A4 (zh)
CN (1) CN110998661A (zh)
WO (1) WO2018165917A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11889112B2 (en) * 2021-04-30 2024-01-30 Tencent America LLC Block-wise content-adaptive online training in neural image compression

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1722836A (zh) * 2004-07-07 2006-01-18 三星电子株式会社 视频编码和解码方法以及视频编码器和解码器
US20120039383A1 (en) * 2010-08-12 2012-02-16 Mediatek Inc. Coding unit synchronous adaptive loop filter flags
CN102907100A (zh) * 2010-05-17 2013-01-30 Sk电信有限公司 使用帧内块和帧间块相混合的编码块的视频编码/解码设备及其方法
US20130195352A1 (en) * 2011-08-04 2013-08-01 Jorn Nystad Methods of and apparatus for encoding and decoding data in data processing systems
US20140281830A1 (en) * 2013-03-15 2014-09-18 International Business Machines Corporation Data encoding and decoding

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3490154B1 (en) * 2001-08-31 2021-03-17 Panasonic Intellectual Property Corporation of America Picture decoding method and decoding device
US8938009B2 (en) * 2007-10-12 2015-01-20 Qualcomm Incorporated Layered encoded bitstream structure
US8990518B2 (en) 2011-08-04 2015-03-24 Arm Limited Methods of and apparatus for storing data in memory in data processing systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1722836A (zh) * 2004-07-07 2006-01-18 三星电子株式会社 视频编码和解码方法以及视频编码器和解码器
CN102907100A (zh) * 2010-05-17 2013-01-30 Sk电信有限公司 使用帧内块和帧间块相混合的编码块的视频编码/解码设备及其方法
US20120039383A1 (en) * 2010-08-12 2012-02-16 Mediatek Inc. Coding unit synchronous adaptive loop filter flags
US20130195352A1 (en) * 2011-08-04 2013-08-01 Jorn Nystad Methods of and apparatus for encoding and decoding data in data processing systems
US20140281830A1 (en) * 2013-03-15 2014-09-18 International Business Machines Corporation Data encoding and decoding

Also Published As

Publication number Publication date
EP3596701A4 (en) 2020-08-12
US11025925B2 (en) 2021-06-01
WO2018165917A1 (en) 2018-09-20
US20200036986A1 (en) 2020-01-30
EP3596701A1 (en) 2020-01-22

Similar Documents

Publication Publication Date Title
US10531086B2 (en) Residual transformation and inverse transformation in video coding systems and methods
US10735729B2 (en) Residual transformation and inverse transformation in video coding systems and methods
US20190268619A1 (en) Motion vector selection and prediction in video coding systems and methods
WO2018152749A1 (en) Coding block bitstream structure and syntax in video coding systems and methods
US10652569B2 (en) Motion vector selection and prediction in video coding systems and methods
US20190379890A1 (en) Residual transformation and inverse transformation in video coding systems and methods
CN110998661A (zh) 视频编码系统和方法中的压缩编码块头
US20200329237A1 (en) Block size determination for video coding systems and methods
US20200036967A1 (en) Motion vector selection and prediction in video coding systems and methods
US20210250579A1 (en) Intra-picture prediction in video coding systems and methods
US12003757B2 (en) Video signal processing method and device for processing motion vector difference information for inter prediction in video signal
US20220159291A1 (en) Video signal processing method and device for processing motion vector difference information for inter prediction in video signal
KR20230149297A (ko) 인트라 예측 모드 도출 기반 인트라 예측 방법 및 장치

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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20200410