CN105532000B - 用于对视频数据进行编码和解码的方法、设备和系统 - Google Patents

用于对视频数据进行编码和解码的方法、设备和系统 Download PDF

Info

Publication number
CN105532000B
CN105532000B CN201480050631.2A CN201480050631A CN105532000B CN 105532000 B CN105532000 B CN 105532000B CN 201480050631 A CN201480050631 A CN 201480050631A CN 105532000 B CN105532000 B CN 105532000B
Authority
CN
China
Prior art keywords
block
coding units
intra
coding
video
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201480050631.2A
Other languages
English (en)
Other versions
CN105532000A (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.)
Canon Inc
Original Assignee
Canon 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 Canon Inc filed Critical Canon Inc
Publication of CN105532000A publication Critical patent/CN105532000A/zh
Application granted granted Critical
Publication of CN105532000B publication Critical patent/CN105532000B/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/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • 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/11Selection of coding mode or of prediction mode among a plurality of spatial 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/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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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
    • 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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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/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/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

Landscapes

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

Abstract

公开了一种用于从视频位流解码编码单位的方法。所述编码单位参考先前解码样本。针对要解码的所述编码单位来确定先前编码单位的先前块矢量。所述先前编码单位被配置为使用帧内块复制。所述方法从所述视频位流解码针对要解码的所述编码单位的块矢量差。所述块矢量差表示所述先前块矢量和要解码的所述编码单位的块矢量之间的差。使用所述先前块矢量和所述块矢量差来确定要解码的所述编码单位的块矢量。基于使用所确定的块矢量所选择的参考块的样本值,来对要解码的所述编码单位进行解码。

Description

用于对视频数据进行编码和解码的方法、设备和系统
技术领域
本发明通常涉及数字视频信号处理,尤其涉及用于对视频数据进行编码 和解码的方法、设备和系统。本发明还涉及包括记录有用于对视频数据进行 编码和解码的计算机程序的计算机可读介质的计算机程序产品。
背景技术
当前存在包括用于传输和存储视频数据的应用程序的许多视频编码用 的应用程序。还开发了许多视频编码标准并且其它视频编码标准当前正在开 发中。视频编码标准化的最新进展已导致形成被称为“视频编码联合小 组”(JCT-VC)的组。该视频编码联合小组(JCT-VC)包括:已知为视频编码专 家组(VCEG)的国际电信联盟(ITU)的电信标准化部门(ITU-T)的研究组16、问 题6(SG16/Q6)的成员;以及还已知为运动图片专家组(MPEG)的国际标准化 组织/国际电工委员会联合技术委员会1/小组委员会29/工作组11(ISO/IECJTC1/SC29/WG11)的成员。
视频编码联合小组(JCT-VC)产生了显著优于“H.264/MPEG-4 AVC”视频 编码标准的新的视频编码标准。该新的视频编码标准已被命名为“高效率视 频编码(HEVC)”。高效率视频编码(HEVC)的进一步开发的目的是引入视频数 据中所存在的色度信息的不同表示(已知为“色度格式”)的支持和更高位深度 的支持。高效率视频编码(HEVC)标准定义了已知为“Main”和“Main10”的两 个配置文件,从而分别支持八(8)位和十(10)位的位深度。高效率视频编码 (HEVC)所支持的用以增加位深度的进一步发展已作为“范围扩展”活动的一部分而在进行中。在视频编码联合小组(JCT-VC)中正研究针对高达十六(16) 位的位深度的支持。
视频数据包括一个或多个颜色通道。通常支持三个颜色通道并且使用 “颜色空间”来表示颜色信息。一个示例颜色空间已知为“YCbCr”,但其它颜 色空间也是可以的。“YCbCr”颜色空间使得能够实现颜色信息的固定精度表 示,因而非常适合于数字表示。“YCbCr”颜色空间包括“亮度”通道(Y)和两个 “色度”通道(Cb和Cr)。各颜色通道具有特定位深度。位深度以位为单位来定 义各个颜色通道中的样本的宽度。通常,所有的颜色通道都具有相同的位深 度,但这些颜色通道也可以具有不同的位深度。
利用特定视频编码标准可实现的编码效率的一个方面是可用预测方法 的特性。对于意图用于二维视频帧的压缩序列的视频编码标准,存在帧内预 测、帧间预测和帧内块复制模式这三种预测。将帧分割成一个或多个块,并 且使用这些类型的预测其中之一来预测各块。帧内预测方法使得能够根据视 频帧的一部分来预测同一视频帧的其它部分的内容。帧内预测方法通常产生 具有定向纹理的块,其中帧内预测模式指定纹理的方向和用作用以产生该纹 理的基础的帧内的邻接样本。帧间预测方法使得能够根据先前视频帧中的块 来预测视频帧内的块的内容。可以将先前视频帧(即,按与可能不同的“显示 顺序”相反的“解码顺序”)称为“参考帧”。帧内块复制模式根据位于当前帧内 的其它块来创建参考块。视频帧序列内的第一个视频帧由于不存在可用于参 考的在前帧,因此通常对该帧内的所有块使用帧内预测。后续视频帧可以使 用一个或多个先前视频帧,其中根据这一个或多个先前视频帧来预测块。
为了实现最高编码效率,通常使用产生最接近所拍摄帧数据的预测块的 预测方法。预测块和所拍摄帧数据之间的其余差已知为“残差(residual)”。通 常将差的该空间域表示变换为频域表示。通常,频域表示紧凑地存储空间域 表示中所存在的信息。频域表示包括通过应用诸如整数离散余弦变换(DCT) 等的变换所得到的“残差系数”的块。此外,对残差系数(或“缩放变换系数”) 进行量化,这引入了损耗但还进一步减少了需要编码在位流中的信息量。可 以将还已知为“变换系数”的残差的有损频域表示存储在位流中。解码器中所 恢复的残差中的损耗量影响从位流解码得到的视频数据与所拍摄帧数据相 比的失真并且影响位流的大小。
视频位流包括编码句法元素的序列。根据“句法结构”的层级对这些句法 元素进行排序。句法结构描述一组句法元素和对各句法元素进行编码所依据 的条件。句法结构可以调用其它句法结构,从而使得能够实现句法元素的层 级配置。句法结构还可以调用同一句法结构的另一实例,从而使得能够实现 句法元素的递归配置。各句法元素包括使用“上下文自适应二进制算术编码” 算法进行编码后的一个或多个“bin(二进制文件)”。可以对给定bin进行“旁路” 编码,其中在该情况下,不存在与该bin相关联的“上下文”。可选地,可以对 bin进行“上下文”编码,其中在该情况下,存在与bin相关联的上下文。各上 下文编码后的bin具有与该bin相关联的一个上下文。该上下文是从一个或多 个可能的上下文中所选择的。该上下文是从存储器中检索到的,并且每次使 用该上下文时,还更新该上下文并将该上下文存储回到存储器中。在针对给 定bin可以使用两个或更多个上下文的情况下,在视频编码器和视频解码器处 应用用以判断使用哪个上下文的规则。在对bin进行编码或解码的情况下,使 用位流中的在前信息来选择使用哪个上下文。解码器中的上下文信息必然跟 踪编码器中的上下文信息(否则,解码器无法解析编码器所产生的位流)。该 上下文包括可能的bin值(或“valMPS”)和概率等级这两个参数。
具有两个不同值的句法元素还可被称为“标志”并且通常使用一个上下 文编码后的bin来进行编码。给定句法结构定义可以包括在视频位流中的可能 句法元素和各句法元素包括在视频位流中的情形。句法元素的各实例促成了 视频位流的大小。视频压缩的目的是使得能够实现使用视频位流并且针对给 定质量等级(包括有损情况和无损情况这两者)具有最小大小(例如,以字节为 单位)的给定序列的表示。同时,始终需要视频解码器实时地对视频位流进 行解码,这样对可以使用的算法的复杂度施加了限制。如此,进行算法复杂 度和压缩性能之间的权衡。特别地,期望可以在降低算法复杂度的同时改进 或维持压缩性能的变形例。
发明内容
本发明的目的是大致克服或至少改进现有配置的一个或多个缺点。
根据本发明的一个方面,提供一种用于从视频位流对编码单位进行解码 的方法,所述编码单位参考先前解码样本,所述方法包括以下步骤:
针对要解码的所述编码单位来确定先前编码单位的先前块矢量,其中所 述先前编码单位被配置为使用帧内块复制;
从所述视频位流来解码针对要解码的所述编码单位的块矢量差,其中所 述块矢量差表示所述先前块矢量和要解码的所述编码单位的块矢量之间的 差;
使用所述先前块矢量和所述块矢量差来确定要解码的所述编码单位的 块矢量;以及
基于使用所确定出的块矢量所选择的参考块的样本值,来对要解码的所 述编码单位进行解码。
根据本发明的另一方面,提供一种用于从视频位流对编码单位进行解码 的系统,所述编码单位参考先前解码样本,所述系统包括:
存储器,用于存储数据和计算机程序;
处理器,其连接至所述存储器,所述计算机程序包括用于进行以下操作 的指令:
针对要解码的所述编码单位来确定先前编码单位的先前块矢量,其 中所述先前编码单位被配置为使用帧内块复制;
从所述视频位流来解码针对要解码的所述编码单位的块矢量差,其 中所述块矢量差表示所述先前块矢量和要解码的所述编码单位的块矢量之 间的差;
使用所述先前块矢量和所述块矢量差来确定要解码的所述编码单 位的块矢量;以及
基于使用所确定出的块矢量所选择的参考块的样本值,来对要解码 的所述编码单位进行解码。
根据本发明的又一方面,提供一种用于从视频位流对编码单位进行解码 的设备,所述编码单位参考先前解码样本,所述设备包括:
用于针对要解码的所述编码单位来确定先前编码单位的先前块矢量的 部件,其中所述先前编码单位被配置为使用帧内块复制;
用于从所述视频位流来解码针对要解码的所述编码单位的块矢量差的 部件,其中所述块矢量差表示所述先前块矢量和要解码的所述编码单位的块 矢量之间的差;
用于使用所述先前块矢量和所述块矢量差来确定要解码的所述编码单 位的块矢量的部件;以及
用于基于使用所确定出的块矢量所选择的参考块的样本值来对要解码 的所述编码单位进行解码的部件。
根据本发明的还一方面,提供一种存储有计算机程序的非瞬态计算机可 读介质,所述计算机程序用于从视频位流对编码单位进行解码,所述编码单 位参考先前解码样本,所述计算机程序包括以下代码:
用于针对要解码的所述编码单位来确定先前编码单位的先前块矢量的 代码,其中所述先前编码单位被配置为使用帧内块复制;
用于从所述视频位流来解码针对要解码的所述编码单位的块矢量差的 代码,其中所述块矢量差表示所述先前块矢量和要解码的所述编码单位的块 矢量之间的差;
用于使用所述先前块矢量和所述块矢量差来确定要解码的所述编码单 位的块矢量的代码;以及
用于基于使用所确定出的块矢量所选择的参考块的样本值来对要解码 的所述编码单位进行解码的代码。
根据本发明的还一方面,提供一种用于将编码单位编码到视频位流中的 方法,所述方法包括以下步骤:
针对要编码的所述编码单位来确定先前编码单位的先前块矢量,其中所 述先前编码单位被配置为使用帧内块复制;
确定针对要编码的所述编码单位的块矢量差,其中所述块矢量差表示所 述先前块矢量和要编码的所述编码单位的块矢量之间的差;
将针对要编码的所述编码单位的所述块矢量差编码到所述视频位流中; 以及
使用利用要编码的所述编码单位的块矢量所选择的参考块的样本值,来 将要编码的所述编码单位编码到所述视频位流中。
根据本发明的还一方面,提供一种用于将编码单位编码到视频位流中的 系统,所述系统包括:
存储器,用于存储数据和计算机程序;
处理器,其连接至所述存储器,所述计算机程序包括用于进行以下操作 的指令:
针对要编码的所述编码单位来确定先前编码单位的先前块矢量,其 中所述先前编码单位被配置为使用帧内块复制;
确定针对要编码的所述编码单位的块矢量差,其中所述块矢量差表 示所述先前块矢量和要编码的所述编码单位的块矢量之间的差;
将针对要编码的所述编码单位的所述块矢量差编码到所述视频位 流中;以及
使用利用要编码的所述编码单位的块矢量所选择的参考块的样本 值,来将要编码的所述编码单位编码到所述视频位流中。
根据本发明的还一方面,提供一种用于将编码单位编码到视频位流中的 设备,所述设备包括:
用于针对要编码的所述编码单位来确定先前编码单位的先前块矢量的 部件,其中所述先前编码单位被配置为使用帧内块复制;
用于确定针对要编码的所述编码单位的块矢量差的部件,其中所述块矢 量差表示所述先前块矢量和要编码的所述编码单位的块矢量之间的差;
用于将针对要编码的所述编码单位的所述块矢量差编码到所述视频位 流中的部件;以及
用于使用利用要编码的所述编码单位的块矢量所选择的参考块的样本 值来将要编码的所述编码单位编码到所述视频位流中的部件。
根据本发明的还一方面,提供一种存储有计算机程序的非瞬态计算机可 读介质,所述计算机程序用于将编码单位编码到视频位流中,所述计算机程 序包括:
针对要编码的所述编码单位来确定先前编码单位的先前块矢量,其中所 述先前编码单位被配置为使用帧内块复制;
确定针对要编码的所述编码单位的块矢量差,其中所述块矢量差表示所 述先前块矢量和要编码的所述编码单位的块矢量之间的差;
将针对要编码的所述编码单位的所述块矢量差编码到所述视频位流中; 以及
使用利用要编码的所述编码单位的块矢量所选择的参考块的样本值来 将要编码的所述编码单位编码到所述视频位流中。
根据本发明的又一方面,提供一种用于从视频位流解码块的方法,所述 块参考先前解码样本,所述方法包括以下步骤:
根据所述视频位流确定预测模式;
在所确定出的预测模式是帧内预测的情况下,从所述视频位流解码帧内 块复制标志,其中所述帧内块复制标志表示当前样本基于当前帧的先前解码 样本;以及
通过根据所述先前解码样本确定所述块的样本值,基于解码后的帧内块 复制标志来从所述视频位流解码所述块。
根据本发明的又一方面,提供一种用于从视频位流解码块的系统,所述 块参考先前解码样本,所述系统包括:
存储器,用于存储数据和计算机程序;
处理器,连接至所述存储器,所述计算机程序包括用于进行以下操作的 指令:
根据所述视频位流确定预测模式;
在所确定出的预测模式是帧内预测的情况下,从所述视频位流解码 帧内块复制标志,其中所述帧内块复制标志表示当前样本基于当前帧的先前 解码样本;以及
通过根据所述先前解码样本确定所述块的样本值,基于解码后的帧 内块复制标志来从所述视频位流解码所述块。
根据本发明的又一方面,提供一种用于从视频位流解码块的设备,所述 块参考先前解码样本,所述设备包括:
用于根据所述视频位流确定预测模式的部件;
用于在所确定出的预测模式是帧内预测的情况下从所述视频位流解码 帧内块复制标志的部件,其中所述帧内块复制标志表示当前样本基于当前帧 的先前解码样本;以及
用于通过根据所述先前解码样本确定所述块的样本值、基于解码后的帧 内块复制标志来从所述视频位流解码所述块的部件。
根据本发明的还一方面,提供一种存储有计算机程序的非瞬态计算机可 读介质,所述计算机程序用于从视频位流解码块的方法,所述计算机程序包 括以下代码:
用于根据所述视频位流确定预测模式的代码;
用于在所确定出的预测模式是帧内预测的情况下从所述视频位流解码 帧内块复制标志的代码,其中所述帧内块复制标志表示当前样本基于当前帧 的先前解码样本;以及
用于通过根据所述先前解码样本确定所述块的样本值、基于解码后的帧 内块复制标志来从所述视频位流解码所述块的代码。
还公开了其它方面。
附图说明
现在将参考以下的附图和附录来说明本发明的至少一个实施例,其中:
图1是示出视频编码和解码系统的示意框图;
图2A和2B构成可以实践图1的视频编码和解码系统的其中一个或这两 者的通用计算机系统的示意框图;
图3是示出视频编码器的功能模块的示意框图;
图4是示出视频解码器的功能模块的示意框图;
图5是示出分割成两个区块和三个条带片段的帧的示意框图;
图6A是示出对编码树块(CTB)内的编码单位(CU)进行扫描的示例“Z扫 描”顺序的示意框图;
图6B是示出相对于当前编码树块(CTB)内的编码单位(CU)而参考邻接 编码树块(CTB)中的样本的块的示例块矢量的示意框图;
图7A是示出相对于当前编码树块(CTB)内的编码单位(CU)而参考邻接 编码树块(CTB)中的样本的块的示例块矢量的示意框图;
图7B是示出参考跨当前编码树块(CTB)和邻接编码树块(CTB)这两者的 样本的块的示例块矢量的示意框图;
图8A是示出参考跨当前编码树块(CTB)和被标记为不可用的邻接编码 树块(CTB)这两者的样本的块的示例块矢量的示意框图;
图8B是示出参考当前编码树块(CTB)内的样本的块的示例调整后的块矢 量的示意框图;
图8C是示出参考如下样本的块的示例块矢量的示意框图,其中在这些样 本中使用帧间预测来对所参考样本的一部分进行解码;
图8D是示出参考如下样本的块的示例块矢量的示意框图,其中在这些样 本中,参考块包括当前编码单位(CU)内的样本;
图9是示出编码单位(CU)句法结构的示意框图;
图10是示出用于将编码单位(CU)句法结构编码到编码位流中的方法的 示意流程图;
图11是示出用于从编码位流解码编码单位(CU)句法结构的方法的示意 流程图;
图12是示出针对编码单位(CU)的帧内块复制标志的上下文选择、并且示 出针对与编码树块(CTB)的顶部对准的编码单位(CU)的帧内块复制标志的上 下文选择的示意框图;
图13是示出图4的熵解码器的功能模块的示意框图;
图14是示出用于对编码单位(CU)的帧内块复制标志进行解码的方法的 示意流程图;
图15A是示出用于确定针对编码单位(CU)的预测模式的方法的示意流程 图;
图15B是示出用于确定针对编码单位(CU)的预测模式的方法的示意流程
图16是示出编码树块(CTB)内的编码单位(CU)中的残差四叉树(RQT)的 示意框图;
图17A是示出用于生成针对被配置为使用帧内块复制模式的编码单位 (CU)的参考样本块的方法的示意流程图;
图17B是示出用于生成针对被配置为使用帧内块复制模式的编码单位 (CU)的参考样本块的方法的示意流程图;
图17C是示出用于生成针对被配置为使用帧内块复制模式的编码单位 (CU)的参考样本块的方法的示意流程图;
图17D是示出用于生成针对被配置为使用帧内块复制模式的编码单位 (CU)的参考样本块的方法的示意流程图;
图18A是示出参考如下样本的块的示例块矢量的示意框图,其中在这些 样本中,块矢量的原点与除当前编码单位(CU)位置以外的点有关;以及
图18B是示出被配置为使用帧内块复制模式的连续编码单位(CU)之间的 示例块矢量表示的示意框图;
附录A示出根据图11的方法的编码单位(CU)句法结构;
附录B示出根据图8C的块矢量一致性限制;
附录C示出根据图8C的帧内块复制方法;以及
附录D示出根据图14的方法的省略了步骤1402~1408的配置的针对 intra_bc_flag的上下文选择。
具体实施方式
在任一个或多个附图中参考具有相同附图标记的步骤和/或特征的情况 下,除非出现相反意图,否则这些步骤和/或特征为了本说明书的目的而具有 相同的功能或操作。
图1是示出视频编码和解码系统100的功能模块的示意框图。系统100可 以利用帧内块复制技术来降低复杂度、提高编码效率并且改善差错恢复。可 以通过减少系统100中所存在的上下文的数量或者通过简化或去除用于选择 针对给定的上下文编码后的bin使用哪个上下文的规则,来降低复杂度。系统 100包括源装置110和目的地装置130。通信信道120用于从源装置110向目的 地装置130通信编码视频信息。在一些配置中,源装置110和目的地装置130 分别可以包括移动电话手机,其中在这种情况下,通信信道120是无线信道。在其它配置中,源装置110和目的地装置130可以包括视频会议设备,其中在 这种情况下,通信信道120通常是诸如因特网接线等的有线信道。此外,源 装置110和目的地装置130可以包括范围宽的任意装置,其中这些装置包括支 持空中电视广播、有线电视应用、因特网视频应用以及在一些存储介质或文 件服务器上捕获编码视频数据的应用的装置。
如图1所示,源装置110包括视频源112、视频编码器114和发送器116。 视频源112通常包括诸如摄像传感器等的所拍摄视频帧数据的源、存储在非 瞬态记录介质上的先前拍摄到的视频序列、或者来自远程摄像传感器的视频 提供。可以包括摄像传感器作为视频源112的源装置110的示例包括智能电 话、视频摄录机和网络视频照相机等。视频编码器114将来自视频源112的所 拍摄帧数据转换成编码视频数据并且以下将参考图3来进一步说明。该编码 视频数据通常由发送器116经由通信信道120作为编码视频数据(或“编码视频 信息”)进行发送。还可以将该编码视频数据存储在诸如“闪速(Flash)”存储器 或硬盘驱动器等的一些存储装置中,直到随后经由通信信道120进行发送为 止。
目的地装置130包括接收器132、视频解码器134和显示装置136。接收器 132从通信信道120接收编码视频数据并将所接收到的视频数据传递至视频 解码器134。然后视频解码器134将解码后的帧数据输出至显示装置136。显 示装置136的示例包括诸如智能电话、平板计算机和计算机监视器或者单机 型电视机等内的阴极射线管和液晶显示器。还可以将源装置110和目的地装 置130各自的功能嵌入单个装置中。
尽管以上说明了示例装置,但源装置110和目的地装置130各自通常经由 硬件组件和软件组件的组合可以配置在通用计算机系统内。图2A示出如下的 这种计算机系统200,其中该计算机系统200包括:计算机模块201;诸如键 盘202、鼠标指示器装置203、扫描器226、可被配置为视频源112的照相机227、 以及麦克风280等的输入装置;以及包括打印机215、可被配置为显示装置136 的显示装置214、以及扬声器217等的输出装置。计算机模块201可以使用外 部调制器-解调器(调制解调器)收发器装置216来经由接线221与通信网络220 进行通信。可以表示通信信道120的通信网络220可以是广域网(WAN),诸如 因特网、蜂窝远程通信网络或私有WAN等。在接线221是电话线的情况下, 调制解调器216可以是传统的“拨号上网”调制解调器。可选地,在接线221是 高容量(例如,线缆)接线的情况下,调制解调器216可以是宽带调制解调器。 还可以使用无线调制解调器来进行向通信网络220的无线连接。收发器装置 216可以提供发送器116和接收器132的功能,并且通信信道120可以嵌入接线 221中。
计算机模块201通常包括至少一个处理器单元205和存储器单元206。例 如,存储器单元206可以具有半导体随机存取存储器(RAM)和半导体只读存 储器(ROM)。计算机模块201还包括多个输入/输出(I/O)接口,其中这多个输 入/输出(I/O)接口包括:音频-视频接口207,其连接至视频显示器214、扬声 器217和麦克风280;I/O接口213,其连接至键盘202、鼠标203、扫描器226、 照相机227以及可选的操纵杆或其它人机接口装置(未示出);以及外部调制解 调器216和打印机215所用的接口208。在一些实现中,调制解调器216可以内 置于计算机模块201内,例如内置于接口208内。计算机模块201还具有本地 网络接口211,其中该本地网络接口211允许计算机系统200经由接线223连接 至已知为局域网(LAN)的局域通信网络222。如图2A所示,局域通信网络222 还可以经由接线224连接至广域网220,其中该局域通信网络222通常包括所 谓的“防火墙”装置或具有相似功能的装置。本地网络接口211可以包括以太 网(EthernetTM)电路卡、蓝牙(BluetoothTM)无线配置或IEEE 802.11无线配置。 然而,对于接口211,可以实践多种其它类型的接口。本地网络接口211还可 以提供发送器116和接收器132的功能,并且通信信道120也可以嵌入局域通 信网络222中。
I/O接口208和213可以提供串行连接和并行连接中的任一个或这两者, 其中前者通常根据通用串行总线(USB)标准来实现并且具有相应的USB连接 器(未示出)。设置有存储装置209,并且存储装置209通常包括硬盘驱动器 (HDD)210。还可以使用诸如软盘驱动器和磁带驱动器(未示出)等的其它存储 装置。通常设置有光盘驱动器212以用作数据的非易失性源。可以使用例如 光盘(例如,CD-ROM、DVD、蓝光盘(Blu-ray DiscTM))、USB-RAM、便携式 外部硬盘驱动器和软盘等的便携式存储器装置作为向计算机系统200的数据 的适当源。通常,HDD 210、光盘驱动器212、网络220和222中的任意还可 被配置为用作视频源112、或者用作为了经由显示器214进行再现所要存储的 解码视频数据的目的地。
计算机模块201的组件205~213通常经由互连总线204并且以得到相关领 域技术人员已知的计算机系统200的传统操作模式的方式进行通信。例如, 处理器205使用接线218连接至系统总线204。同样,存储器206和光盘驱动器 212通过接线219连接至系统总线204。可以实践所述配置的计算机的示例包 括IBM-PC和兼容机、Sun SPARCstation、AppleMacTM或相似的计算机系统。
在适当或期望的情况下,可以使用计算机系统200来实现视频编码器114 和视频解码器134以及以下所述的方法。特别地,可以将视频编码器114和视 频解码器134以及要说明的图10、11、14、15A、15B、17A、17B、17C和17D 的方法作为在计算机系统200内可执行的一个或多个软件应用程序233来实 现。利用在计算机系统200内执行的软件233中的指令231(参见图2B)来实现 视频编码器114、视频解码器134和所述方法的步骤。可以将软件指令231形 成为各自用于进行一个或多个特定任务的一个或多个代码模块。还可以将软 件分割成两个单独部分,其中第一部分和相应的代码模块进行所述方法,并 且第二部分和相应的代码模块管理第一部分和用户之间的用户界面。
例如,可以将软件存储在包括以下所述的存储装置的计算机可读介质 中。将软件从计算机可读介质载入计算机系统200,然后由计算机系统200来 执行。记录有这种软件或计算机程序的计算机可读介质是计算机程序产品。 优选地,在计算机系统200中使用该计算机程序产品实现了用于实施视频编 码器114、视频解码器134和所述方法的有利设备。
通常将软件233存储在HDD 210或存储器206中。将该软件从计算机可读 介质载入计算机系统200,并且由计算机系统200来执行。因而,例如,可以 将软件233存储在光盘驱动器212所读取的光学可读盘存储介质(例如, CD-ROM)225上。
在一些实例中,将应用程序233以编码在一个或多个CD-ROM 225上并且 经由相应的驱动器212进行读取的方式供给至用户,或者可选地,可以由用 户从网络220或222读取应用程序233。此外,还可以将软件从其它计算机可 读介质载入计算机系统200。计算机可读存储介质是指将所记录的指令和/或 数据提供至计算机系统200以供执行和/或处理的任何非瞬态有形存储介质。 这种存储介质的示例包括软盘、磁带、CD-ROM、DVD、蓝光盘、硬盘驱动 器、ROM或集成电路、USB存储器、磁光盘、或者诸如PCMCIA卡等的计算 机可读卡,而与这些装置在计算机模块201的内部还是外部无关。还可以参 与将软件、应用程序、指令和/或视频数据或编码视频数据提供至计算机模块 401的瞬态或非有形计算机可读传输介质的示例包括:无线电或红外线传输 通道及向着其它计算机或联网装置的网络接线、以及包括电子邮件发送和网 站上所记录的信息等的因特网或内联网。
可以执行上述的应用程序233的第二部分和相应的代码模块来实现要渲 染或呈现在显示器214上的一个或多个图形用户界面(GUI)。通过典型地对键 盘202和鼠标203进行操作,计算机系统200的用户和应用程序可以以在功能 上可适用的方式对界面进行操作,以将控制命令和/或输入提供至与这些GUI 相关联的应用程序。还可以实现在功能上可适用的其它形式的用户界面,诸 如利用经由扬声器217所输出的语音提示和经由麦克风280所输入的用户声 音命令的音频界面等。
图2B是处理器205和“存储器”234的详细示意框图。存储器234表示图2A 中的计算机模块201可以访问的(包括HDD 209和半导体存储器206的)所有存 储器模块的逻辑聚合。
在初始对计算机模块201通电的情况下,执行上电自检(power-on self-test,POST)程序250。通常将POST程序250存储在图2A的半导体存储器 206的ROM 249中。有时将诸如存储有软件的ROM 249等的硬件装置称为固 件。POST程序250检查计算机模块201内的硬件以确保适当工作,并且通常 检查处理器205、存储器234(209,206)和通常还存储在ROM249中的基本输 入-输出系统软件(BIOS)模块251,以进行正确操作。一旦POST程序250成功运行,BIOS 251启动图2A的硬盘驱动器210。启动硬盘驱动器210使得经由处 理器205执行驻留在硬盘驱动器210上的引导装入程序252。这样将操作系统 253载入RAM存储器206,其中在该RAM存储器206上,操作系统253开始工 作。操作系统253是处理器205可执行的系统级应用程序,以实现包括处理器 管理、存储器管理、装置管理、存储管理、软件应用程序接口和通用用户界 面等的各种高级功能。
操作系统253管理存储器234(209,206),以确保计算机模块201上运行的 各处理或应用程序具有在不会与分配至其它处理的内存冲突的情况下执行 的充足内存。此外,必须适当使用图2A的计算机系统200中可用的不同类型 的存储器,以使得各处理可以高效地运行。因此,聚合存储器234并不意图 例示如何分配存储器的特定区段(除非另外说明),而是提供计算机系统200 可访问的存储器的概述图以及如何使用该存储器。
如图2B所示,处理器205包括多个功能模块,其中这多个功能模块包括 控制单元239、运算逻辑单元(ALU)240和有时称为高速缓冲存储器的本地或 内部存储器248。高速缓冲存储器248在寄存器区段中通常包括多个存储寄存 器244~246。一个或多个内部总线241从功能上使这些功能模块相互连接。处 理器205通常还具有用于使用接线218来经由系统总线204与外部装置进行通 信的一个或多个接口242。存储器234使用接线219连接至总线204。
应用程序233包括可以包含条件分支指令和循环指令的指令序列231。程 序233还可以包括执行程序233时所使用的数据232。将指令231和数据232分 别存储在存储器位置228、229、230和235、236、237中。根据指令231和存 储器位置228~230的相对大小,如存储器位置230中示出的指令所描述的,可 以将特定指令存储在单个存储器位置中。可选地,如存储器位置228和229中 示出的指令段所描述的,可以将指令分割成各自被存储在单独的存储器位置 的多个部分。
通常,向处理器205赋予一组指令,其中在该处理器205内执行该组指令。 处理器205等待下一输入,其中处理器205通过执行另一组指令来对该下一输 入作出反应。可以从多个源中的一个或多个源提供各输入,其中该输入包括 一个或多个输入装置202、203所生成的数据、从外部源经由网络220、202其 中之一所接收到的数据、从存储装置206、209其中之一所检索到的数据或者 从插入相应的读取器212内的存储介质225所检索到的数据(所有这些均在图 2A中示出)。执行一组指令在一些情况下可能会导致输出数据。执行还可能涉及将数据或变量存储至存储器234。
视频编码器114、视频解码器134和所述方法可以使用存储器234内的相 应存储器位置255、256、257中所存储的输入变量254。视频编码器114、视 频解码器134和所述方法产生存储器234内的相应存储器位置262、263、264 中所存储的输出变量261。可以将中间变量258存储在存储器位置259、260、 266和267中。
参考图2B的处理器205,寄存器244、245、246、运算逻辑单元(ALU)240 和控制单元239一起工作以进行微操作序列,其中这些微操作序列是针对构 成程序233的指令集中的每个指令进行“提取、解码和执行”周期所需的。各 提取、解码和执行周期包括以下操作:
(a)提取操作,用于从存储器位置228、229、230提取或读取指令231;
(b)解码操作,其中在该解码操作中,控制单元239判断提取了哪个指令; 以及
(c)执行操作,其中在该执行操作中,控制单元239和/或ALU 240执行该 指令。
之后,可以执行针对下一指令的进一步提取、解码和执行周期。同样, 可以进行存储周期,其中在该存储周期中,控制单元239将值存储至或写入 存储器位置232。
要说明的图9和10的方法中的各步骤或子处理与程序233的一个或多个 区段相关联,并且通常通过处理器205中的寄存器部244、245、247、ALU 240 和控制单元239一起工作以针对程序233的所述区段的指令集中的每个指令 进行提取、解码和执行周期,来进行该步骤或子处理。
图3是示出视频编码器114的功能模块的示意框图。图4是示出视频解码 器134的功能模块的示意框图。通常,在视频编码器114和视频解码器134之 间以块或阵列(例如,样本的块或变换系数的块等)来传递数据。在参考各个 阵列元素(例如,样本或变换系数)的行为来说明功能模块的情况下,该行为 应被理解为适用于所有的阵列元素。
如图2A和2B所示,可以使用通用计算机系统200来实现视频编码器114 和视频解码器134,其中可以利用计算机系统200内的专用硬件来实现各种功 能模块。可选地,可以利用计算机系统200内可执行的软件(诸如驻留在硬盘 驱动器205上并且由处理器205控制其执行的软件应用程序233的一个或多个 软件代码模块等)来实现视频编码器114和视频解码器134的各种功能模块。在 另一替代例中,可以通过计算机系统200内可执行的专用硬件和软件的组合 来实现视频编码器114和视频解码器134的各种功能模块。可选地,可以在诸 如进行所述方法的功能或子功能的一个或多个集成电路等的专用硬件中实 现视频编码器114、视频解码器134和所述方法。这种专用硬件可以包括图形 处理器、数字信号处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA) 或者一个或多个微处理器和关联存储器。特别地,视频编码器114包括模块 320~350,并且视频解码器134包括模块420~436,其中这些模块各自可被实 现为软件应用程序233的一个或多个软件代码模块。
尽管图3的视频编码器114是高效率视频编码(HEVC)视频编码流水线的 示例,但还可以使用其它视频编解码器来进行这里所述的处理阶段。视频编 码器114接收诸如一系列帧(各帧包括一个或多个颜色通道)等的所拍摄帧数 据。
视频编码器114将诸如帧数据310等的所拍摄帧数据的各帧分割成通常 被称为“编码树块”(CTB)的区域。帧数据310包括一个或多个颜色层。各颜色 层包括样本。各样本占据大小适合位深度390的二进制字。因而,可能的样 本值的范围由位深度390来定义。例如,如果位深度被设置为八(8)位,则样 本值可以为零(0)~二百五十五(255)。各编码树块(CTB)包括将帧的一部分子 分割成“编码单位”(CU)的集合的层级四叉树子分割。编码树块(CTB)通常占 据64×64个亮度样本的区域,尽管诸如16×16或32×32等的其它大小也是可以 的。在一些情况下,可以使用诸如128×128个亮度样本等的编码树块(CTB) 所用的甚至更大的大小。可以通过分割将编码树块(CTB)子分割成四个大小 相等的区域以创建新的层级等级。可以递归地应用分割,从而得到四叉树层 级(或“编码树”)。由于编码树块(CTB)的边尺寸是2的幂并且四叉树分割使宽 度和高度减半,因此区域的边尺寸也是2的幂。在不进行区域的进一步分割 的情况下,认为在该区域内存在“编码单位”(CU)。在编码树块的顶级(或者通 常为“最高等级”)不进行分割的情况下,占据整个编码树块的区域包含一个编 码单位(CU)。在这些情况下,该编码单位(CU)通常被称为“最大编码单 位”(LCU)。针对各编码单位还存在诸如被8×8个亮度样本所占据的区域等的 最小大小,尽管其它最小大小也是可以的(例如,16×16个亮度样本或32×32 个亮度样本)。通常将最小大小的编码单位称为“最小编码单位”(SCU)。作为 该四叉树层级的结果,编码树块(CTB)整体被一个或多个编码单位(CU)所占 据。各编码单位(CU)与通常被称为“预测单位”(PU)的数据样本的一个或多个 阵列相关联。各编码单位(CU)中的预测单位(PU)的各种配置均是可以的,其 中要求是预测单位(PU)没有重叠并且编码单位(CU)整体被一个或多个预测 单位(PU)所占据。这种要求确保了预测单位(PU)覆盖整个帧区域。将与编码 单位(CU)相关联的一个或多个预测单位(PU)的配置称为“分区模式”。
视频编码器114通过根据编码单位(CU)的分区模式从多路复用器模块 340输出预测单位(PU)382来进行工作。差模块344产生“残差样本阵列”360。 残差样本阵列360是预测单位(PU)382和来自帧数据310的编码树块(CTB)的 编码单位(CU)的数据样本的相应2D阵列之间的差。针对这些阵列中的各位置 处的相应样本计算该差。由于差可能为正或负,因此一个差样本的动态范围 是位深度+1位。
在变换模块320中可以将残差样本阵列360变换成频域。来自差模块344 的残差样本阵列360被变换模块320接收到,其中该变换模块320通过应用“正 变换”将残差样本阵列360从空间表示转换为频域表示。变换模块320根据具 有特定精度的变换来创建变换系数。将编码单位(CU)子分割成一个或多个变 换单位(TU)。可以将编码单位(CU)向一个或多个变换单位(TU)的子分割称为 “残差四叉树”或“残差四叉树(RQT)”或“变换树”。
量化控制模块346可以根据“率失真标准”针对各种可能的量化参数值测 试编码位流312中所需的位率。率失真标准是编码位流312的位率或其局部区 域与失真之间的可接受权衡的度量。失真是帧缓冲器332中所存储的帧和所 拍摄帧数据310之间的差的度量。用于测量失真的方法包括使用峰值信噪比 (PSNR)或绝对差值和(SAD)度量。在视频编码器114的一些配置中,率失真标 准仅考虑亮度颜色通道的率和失真,因而编码决定是基于亮度通道的特性来 进行的。通常,残差四叉树(RQT)在亮度颜色通道和色度颜色通道之间是共 用的,并且色度信息的量与亮度相比相对较小,因而在率失真标准中仅考虑 亮度是适当的。
从量化控制模块346输出量化参数384。该量化参数针对视频数据的帧可 以是固定的、或者在正对帧进行编码时可以以块为单位改变。用于控制量化 参数384的其它方法也是可以的。残差四叉树所用的一组可能的变换单位(TU) 依赖于可用的变换大小和编码单位(CU)大小。在一个配置中,残差四叉树得 到编码位流312的较低位率,由此实现更高的编码效率。较大大小的变换单 位(TU)使得将较大的变换用于亮度颜色通道和色度颜色通道这两者。通常, 较大的变换提供残差样本阵列的样本数据(或“残差能量”)分散在该残差样本 阵列内的更紧凑表示。与较大的变换相比,较小的变换提供残差样本阵列的 残差能量局限于该残差样本阵列的特定区域的更紧凑表示。因而,残差四叉 树(RQT)的许多可能结构提供用于在高效率视频编码(HEVC)标准中实现残 差样本阵列360的高编码效率的有用方式。
变换控制模块348选择在对残差四叉树(RQT)的各叶节点进行编码时所 使用的变换大小。例如,可以测试各种变换大小(因而可以测试残差四叉树 结构或变换树),并且可以选择根据率失真标准而得到最佳权衡的变换树。 变换大小386表示所选择的变换的大小。将变换大小386编码在编码位流312 中并且提供至变换模块320、量化模块322、去量化模块326和逆变换模块328。 变换大小386可以由变换维度(例如,4×4、8×8、16×16或32×32)、变换大小(例 如,4、8、16或32)或者变换大小的log2(例如,2、3、4或5)可互换地表示。在使用变换大小的特定表示的数值(例如,在等式中)的情况下,在以下说明 中,认为有必要的根据变换大小的任何其它表示的转换应被视为隐含地发 生。
视频编码器114可被配置为以“变换量化旁路”模式进行工作,其中在该 “变换量化旁路”模式中,变换模块320和量化模块322被旁路。在变换量化旁 路模式中,视频编码器114提供用以以无损方式将帧数据310编码在编码位流 312中的方式。以编码单位(CU)等级来控制变换量化旁路模式的使用,从而 使得能够利用视频编码器114以无损方式对帧数据310的一部分进行编码。经 由“高等级句法”来控制变换量化旁路模式的可用性,从而使得在帧数据310 的任何部分中不需要无损编码的情况下能够去除用于对变换量化旁路模式进行控制的信令开销。高等级句法是指编码位流312中所存在的通常不太经 常进行编码并且用于描述位流312的性质的句法结构。例如,可以使用编码 位流312的高等级句法结构来限制或配置视频编码器114和视频解码器134中 所使用的特定编码工具。高等级句法结构的示例包括“序列参数集”、“图片 参数集”和“条带头部”。
对于高效率视频编码(HEVC)标准,使用诸如改进的离散余弦变换(DCT) 等的变换来实现残差样本阵列360向频域表示的转换。在这些变换中,代替 相乘,修改允许使用偏移和相加来实现。这种修改与离散余弦变换(DCT)相 比,使得能够降低实现复杂度。除改进的离散余弦变换(DCT)外,在特定情 形下还可以使用改进的离散正弦变换(DST)。根据所支持的变换大小,残差 样本阵列360和缩放变换系数362的各种大小均是可以的。在高效率视频编码 (HEVC)标准中,对具有诸如32×32、16×16、8×8和4×4等的大小的数据样本 的2D阵列进行变换。因而,视频编码器114可利用变换大小的预定集合。此 外,变换大小的集合在亮度通道和色度通道之间可能有所不同。
二维变换通常被配置为“可分离的”,从而能够实现为沿一个方向(例如, 沿着行)在数据样本的2D阵列上进行工作的1D变换的第一集合。在1D变换的 第一集合之后是沿另一方向(例如,沿着列)在从1D变换的第一集合输出的数 据样本的2D阵列上进行工作的1D变换的第二集合。通常将宽度和高度相同 的变换称为“正方形变换”。还可以使用宽度和高度不同的附加变换,并且这 些附加变换通常被称为“非正方形变换”。可以将行方向和列方向的一维变换 组合到诸如4×4变换模块或8×8变换模块等的特定硬件或软件模块中。
尽管可能并不经常使用维度更大的变换,但这些更大维度的变换需要实 现更大量的电路。因此,高效率视频编码(HEVC)标准定义32×32个亮度样本 的最大变换大小。向亮度通道和色度通道这两者应用变换。针对变换单位(TU) 在亮度通道和色度通道的处理之间存在差异。各残差四叉树占据一个编码单 位(CU),并且被定义为编码单位(CU)向着在残差四叉树层级的各叶节点处包 含一个变换单位(TU)的层级的四叉树分解。各变换单位(TU)具有与所支持的 变换大小其中之一相对应的维度。与编码树块(CTB)相似,需要编码单位(CU) 整体被一个或多个变换单位(TU)占据。在残差四叉树层级的各等级处,“编 码块标志值”用信号通知在各颜色通道中可能存在变换。该信号通知可以表 示(在不存在进一步分割的情况下)在当前层级等级中存在变换、或者较低层 级可能包含由此得到的变换单位(TU)中的至少一个变换。在编码块标志值为 0的情况下,已知当前或较低的层级等级处的所有残差系数为零。在这种情 况下,针对当前层级等级或较低层级等级处的任何变换单位(TU)的相应颜色 通道,均无需进行变换。在编码块标志值为1的情况下,如果不对当前区域 进行进一步子分割,则该区域包含需要至少一个非零残差系数的变换。如果 对当前区域进行进一步子分割,则编码块标志值为1表示如此得到的各子分 割区域可以包括非零残差系数。这样,针对各颜色通道,零个或更多个变换 可以覆盖从无直至编码单位(CU)整体的编码单位(CU)的区域的一部分。针对 各颜色通道存在单独的编码块标志值。由于存在仅具有一个可能的编码块标 志值的情况,因此无需对各编码块标志值进行编码。
将缩放变换系数362输入至量化模块322,其中在该量化模块322中,根 据所确定的量化参数384对缩放变换系数362的数据样本值进行缩放和量化 以产生变换系数364。变换系数364是具有与残差样本阵列360相同的维度的 值的阵列。在应用变换的情况下,变换系数364提供残差样本阵列360的频域 表示。在跳过变换的情况下,变换系数364提供残差样本阵列360的空间域表 示(即,由量化模块322进行了量化但未由变换模块320进行变换)。对于离散 余弦变换(DCT),变换系数364的左上方值指定针对残差样本阵列360的“DC”值,并且已知为“DC系数”。DC系数代表残差样本阵列360的值的“平均值”。 变换系数364中的其它值指定针对残差样本阵列360的“AC系数”。根据所确定 的量化参数384的值,该缩放和量化导致精度损失。所确定的量化参数384的 值越高导致量化越粗略,因而导致从缩放变换系数362中丢失的信息越多。 由于要编码的信息较少,因此信息的丢失提高了视频编码器114所实现的压 缩。压缩效率的提高是以降低来自视频解码器134的输出的可视质量为代价 发生的。例如,与帧数据310相比,解码帧412的峰值信噪比(PSNR)降低。所 确定的量化参数384可以在对帧数据310的各帧进行编码期间改变。可选地, 所确定的量化参数384可以针对帧数据310的一部分固定。在一个配置中,所 确定的量化参数384可以针对帧数据310的整个帧固定。所确定的量化参数 384的其它改变也是可以的,诸如利用单独值对各个缩放变换系数362进行量 化等。
将变换系数364和所确定的量化参数384视为向着去量化模块326的输 入。去量化模块326反转量化模块322所进行的缩放以产生重新缩放变换系数 366。重新缩放变换系数是变换系数364的重新缩放版本。还将变换系数364、 所确定的量化参数384、变换大小386和位深度390视为向着熵编码器模块324 的输入。熵编码器模块324将变换系数364的值编码在编码位流312中。编码 位流312还可被称为“视频位流”。由于(例如,通过量化模块322的操作所引起 的)精度损失,因此重新缩放变换系数366与缩放变换系数362中的原始值不相同。然后将来自去量化模块326的重新缩放变换系数366输出至逆变换模块 328。
逆变换模块328进行从频域向着空间域的逆变换,以产生重新缩放变换 系数366的空间域表示368。空间域表示368与视频解码器134处所产生的空间 域表示大致相同。然后,将空间域表示368输入至求和模块342。
运动估计模块338通过将帧数据310与来自(通常配置在存储器206内的) 帧缓冲器模块332中所存储的帧的一个或多个集合中的先前帧数据进行比 较,来产生运动矢量374。帧的这些集合已知为“参考图片”并且列举在“参考 图片列表”中。然后将这些运动矢量374输入至运动补偿模块334,其中该运 动补偿模块334考虑到根据运动矢量374所推导出的空间偏移,通过对帧缓冲 器模块332中所存储的数据样本进行滤波来产生帧间预测的预测单位(PU) 376。尽管图3没有示出,但也将运动矢量374传递至熵编码器模块324以编码在编码位流312中。这些运动矢量可被编码为表示针对当前块的运动矢量和 预测运动矢量之间的差的“运动矢量差”(或“运动矢量德尔塔”)。预测运动模 式可以根据一个或多个空间或时间上的邻接块来确定。在无需对运动矢量差 进行编码的情况下,可以将预测运动矢量用于当前块。将编码位流312中无 运动矢量差或残差系数的编码单位(CU)称为“跳过”块。
帧内预测模块336使用从求和模块342获得的样本370来产生帧内预测的 预测单位(PU)378。特别地,帧内预测模块336使用来自已被解码的邻接块的 样本来产生针对当前预测单位(PU)的帧内预测样本。在邻接块不可用(例如, 在帧边界处)的情况下,邻接样本被视为“不可用”于参考。在这些情况下,代 替邻接样本值,可以使用默认值。通常,默认值(或“半色调”)等于位深度所 表示的范围的一半。例如,在视频编码器114是针对八(8)的位深度所配置的 情况下,默认值是128。求和模块342对来自多路复用器模块340的预测单位(PU)382和多路复用器的空间域输出382进行求和。帧内预测模块336还产生 帧内预测模式380,其中该帧内预测模式380被发送至熵编码器324以编码在 编码位流312中。
帧内块复制模块350测试各种块矢量以产生针对预测单位(PU)382的参 考块。该参考块包括从当前编码树块(CTB)和/或先前编码树块(CTB)获得的 样本370的块。参考块不包括来自当前编码树块(CTB)中的尚未被解码因而不 可用在样本370中的任何编码单位(CU)的样本。
块矢量是参考一对编码树块(CTB)内的块的二维矢量。帧内块复制模块 350可以通过使用嵌套循环进行搜索来测试每个有效的块矢量。然而,帧内 块复制模块350可以使用更快的搜索方法来产生参考块。例如,帧内块复制 模块350可以通过搜索在水平或垂直方向上与当前编码单位(CU)对准的块矢 量来降低搜索复杂度。在另一示例中,帧内块复制模块350还可以搜索近水 平和近垂直的块矢量以产生参考块。在另一示例中,帧内块复制模块350可 以测试块矢量的空间稀疏集合,然后在稀疏的块矢量中所选择的块矢量的附近进行精细搜索,以产生最终块矢量。
对块矢量进行熵编码具有关联的成本或速率。对块矢量进行熵编码的一 个方法是重复使用运动矢量差(即,“mvd_coding”)句法结构。运动矢量差句 法结构允许对二维符号矢量进行编码,因而适合块矢量。运动矢量差句法结 构对大小较小的矢量所进行的编码与对大小较大的矢量所进行的编码相比 更为紧凑。结果,在速率测量中,可能会引导偏向选择附近的参考块。
给定的块矢量得到具有特定失真的特定参考块。在视频编码器114所测 试的块矢量中,应用率失真权衡以确定针对帧内块复制模式应用哪个块矢 量。整体率失真权衡可以将帧内块复制模式的结果与诸如帧间预测和帧内预 测等的其它预测方法的结果进行比较。
可以使用帧内预测、帧间预测或帧内块复制方法来生成预测单位(PU)。 帧内预测方法利用与预测单位(PU)邻接(即,通常位于该预测单位的上方和左 方)的先前进行了解码的数据样本,从而在该预测单位(PU)内生成参考数据样 本。各种方向的帧内预测都是可以的。在一个配置中,三十三(33)个方向的 帧内预测是可以的。针对总共三十五(35)个可能的帧内预测模式,可以支持 “DC模式”和“平面模式”。
帧间预测方法利用运动矢量以参考来自所选择的参考帧中的块。参考图 3,运动估计模块338和运动压缩模块334在精度为亮度样本的精度的八分之 一(1/8)的运动矢量374上进行工作,从而使得能够进行帧数据310中的帧之间 的运动的精确建模。可以根据率失真权衡来决定要使用帧内预测、帧间预测 和帧内块复制方法中的哪个。在由此得到的编码位流312的期望位率和由于 帧内预测、帧间预测或帧内块复制方法而引入的图像质量失真量之间进行率 失真权衡。如果使用帧内预测,则还根据率失真权衡来从一组可能的帧内预 测模式中选择一个帧内预测模式。多路复用器模块340可以选择来自帧内预 测模块336的帧内预测的参考样本378、或来自运动补偿块334的帧间预测的 预测单位(PU)376、或者来自帧内块复制模块350的参考块。
求和模块342产生总和370,其中将该总和370输入至去块滤波器模块 330。去块滤波器模块330沿着块边界进行滤波,从而产生写入存储器206内 所配置的帧缓冲器模块332的去块样本372。帧缓冲器模块332是具有用以保 持来自一个或多个过去帧的数据以供帧间预测的预测单位(PU)的将来参考 的充足容量的缓冲器。
对于高效率视频编码(HEVC)标准,将熵编码器324所产生的编码位流 312描绘成网络抽象层(NAL)单位。使用一个或多个“条带”来对帧进行编码, 其中各条带包括一个或多个编码树块(CTB)。定义了“独立条带片段”和“依赖 条带片段”这两种条带。通常,帧的各条带包含在一个NAL单位中。熵编码 器324通过进行上下文自适应二进制算术编码(CABAC)算法将统称为“句法 元素”的变换系数364、帧内预测模式380、运动矢量(或运动矢量差)和其它参 数编码在编码位流312中。将句法元素一起组成“句法结构”。分组可以包含 用以描述层级结构的递归。除诸如帧内预测模式等的序数值或者诸如运动矢 量等的整数值以外,句法元素还包括诸如用以表示四叉树分割等的标志。
视频编码器114还将帧分割成一个或多个“区块”。各区块是可以独立进 行编码和解码的编码树块(CTB)的矩形集合,从而便于视频编码器114和视频 解码器134的并行实现。在各区块内,按光栅顺序扫描编码树块(CTB),并且 视频编码器114或视频解码器134的单核(或线程)实现按光栅扫描顺序扫描区 块。为了使得能够并行实现视频编码器114和视频解码器134,沿着区块边界 的块的帧内预测可能无法使用来自邻接区块中的块的样本。如此,即使确实 存在样本值,也可以将邻接样本标记为不可用于帧内预测。
尽管参考高效率视频编码(HEVC)视频解码流水线来描述图4的视频解 码器134,但其它的视频编解码器也可以采用模块420~436的处理阶段。还可 以从存储器206、硬盘驱动器210、CD-ROM、蓝光(Blu-rayTM)盘或其它计算 机可读存储介质读取编码视频信息。可选地,可以从诸如连接至通信网络220 的服务器或射频接收器等的外部源来接收编码视频信息。
如从图4看出,将诸如编码位流312等的所接收到的视频数据输入至视频 解码器134。可以从存储器206、硬盘驱动器210、CD-ROM、蓝光(Blu-rayTM) 盘或其它计算机可读存储介质读取编码位流312。可选地,可以从诸如连接 至通信网络220的服务器或射频接收器等的外部源来接收编码位流312。编码 位流312包含表示要解码的所拍摄帧数据的编码句法元素。
将编码位流312输入至熵解码器模块420,其中该熵解码器模块420从编 码位流312中提取句法元素,并且将这些句法元素的值传递至视频解码器134 中的其它块。熵解码器模块420应用上下文自适应二进制算术编码(CABAC) 算法以从编码位流312解码句法元素。使用解码后的句法元素来在视频解码 器134内重建参数。参数包括零以上的残差数据阵列450和运动矢量452。从 编码位流312解码运动矢量差,并且根据解码后的运动矢量差来推导运动矢 量452。
视频解码器134内重建的参数还包括预测模式454、量化参数468、变换 大小470和位深度472。变换大小470由视频编码器114根据变换大小386编码 在编码位流312中。位深度472由视频编码器114根据位深度390编码在编码位 流312中。量化参数468由视频编码器114根据量化参数384编码在编码位流 312中。因而,变换大小470等于变换大小386,位深度472等于位深度390, 并且量化参数468等于量化参数384。
将残差数据阵列450传递至去量化模块421,将运动矢量452传递至运动 补偿模块434,并且将预测模式454传递至帧内预测模块426和多路复用器 428。
参考图4,去量化模块421对残差数据阵列450的残差数据进行逆缩放以 创建采用变换系数的形式的重建数据455。去量化模块421将重建数据455输 出至逆变换模块422。逆变换模块422应用“逆变换”以将重建数据455(即,变 换系数)从频域表示转换为空间域表示,从而经由多路复用器模块423输出残 差样本阵列456。逆变换模块422进行与逆变换模块328相同的操作。逆变换 模块422被配置为进行根据位深度与位深度472相对应的变换大小470而调整 大小后的逆变换。逆变换模块422所进行的变换是从对符合高效率视频编码(HEVC)标准的编码位流312进行解码所需的变换大小的预定集合中所选择 的。
运动补偿模块434将来自熵解码器模块420的运动矢量452与来自存储器 206内所配置的帧缓冲器块432的参考帧数据460相组合使用,以产生针对预 测单位(PU)的帧间预测的预测单位(PU)462。该帧间预测的预测单位(PU) 462是基于先前解码的帧数据的输出解码帧数据的预测。在预测模式454表示 使用帧内预测对当前预测单位(PU)进行编码的情况下,帧内预测模块426产 生针对预测单位(PU)的帧内预测的预测单位(PU)464。该帧内预测的预测单 位(PU)464是使用在空间上邻接预测单位(PU)的数据样本和还由预测模式454供给的预测方向来产生的。在空间上邻接的数据样本是根据从求和模块 424输出的总和458来获得的。
如从图4看出,视频解码器134的帧内块复制模块436通过从当前编码树 块和/或先前编码树块(CTB)复制样本的阵列来产生参考样本的块。通过将熵 解码器420解码后的块矢量与当前编码单位(CU)的位置相加来计算参考样本 的偏移。多路复用器模块428根据当前预测模式454,来从帧内块复制模块436 中选择针对预测单位(PU)466或参考块的帧内预测的预测单位(PU)464或帧 间预测的预测单位(PU)462。利用求和模块424将从多路复用器模块428输出 的预测单位(PU)466与来自逆缩放和变换模块422的残差样本阵列456相加, 以产生总和458。然后将该总和458分别输入至去块滤波器模块430、帧内预 测模块426和帧内块复制模块436。去块滤波器模块430沿着诸如变换单位(TU) 边界等的数据块边界进行滤波以使可见的伪影平滑化。将去块滤波器模块 430的输出写入存储器206内所配置的帧缓冲器模块432。帧缓冲器模块432提 供用以保持一个或多个解码帧以供将来参考的充足存储量。还将解码帧412 从帧缓冲器模块432输出至诸如显示装置136(例如,采用显示装置214的形式) 等的显示装置。
图5是示出如以下所述被分割成两个区块和三个条带片段的帧500的示 意框图。
帧500包括图5中表示为网格单元的编码树块(CTB)的阵列。帧500被分割 成在图5中利用虚线516分开的两个区块。帧500的三个条带包括独立条带片 段502、506和512以及依赖条带片段504、508、510和514。依赖条带片段504 依赖于独立条带片段502。依赖条带片段508和510依赖于独立条带片段506。 依赖条带片段514依赖于独立条带片段512。
在图5中使用诸如线520等的粗线来表示将帧500分割成条带。如图5中的 线518等的虚线所示,各条带被分割成独立条带片段以及零个或更多个依赖 条带片段。因此,在图5的示例中,一个条带包括条带片段502和504,一个 条带包括条带片段506、508和510,并且一个条带包括条带片段512和514。
对帧500中的编码树块(CTB)的扫描进行排序,使得按光栅顺序对第一个 区块进行扫描,之后按光栅顺序对第二个区块进行扫描。可以使帧内预测的 预测单位(PU)与编码树块(CTB)的上边和左边中的任意或这两者对准。在这 些情况下,帧内预测所需的邻接样本可以位于邻接编码树块(CTB)中。邻接 编码树块(CTB)可以属于不同的区块或不同的条带。在这些情况下,不访问 邻接样本。作为代替,使用默认值。该默认值可以是根据可用的其它邻接样 本所推导出的。通常,针对不可用的各邻接样本,使用可用的最近邻接样本值。可选地,可以将默认值设置成等于位深度所表示的半色调值、即2~通过 从位深度中减去1所得到的结果的幂。
如图5所示的帧500中的区块的配置对于并行处理而言是有益的。例如, 视频编码器114可以包括熵编码器324的多个实例并且视频解码器134可以包 括熵解码器420的多个实例。可以利用熵编码器324和熵解码器420的单独实 例来同时处理各区块。
图6A是示出编码树块(CTB)600内的扫描区域的示例“Z扫描”顺序的示 意框图。在编码树块(CTB)600的层级分解的各等级处,进行类似“Z”的扫描, 即先从左向右扫描上方的两个区域,然后从左向右扫描下方的两个区域。该 扫描是以深度优先的方式递归地应用的。例如,如果将当前层级等级的区域 子分割成更低层级等级的更多区域,则在进入当前层级等级的下一区域之 前,在更低层级等级内应用Z扫描。编码树块(CTB)的没有被进一步子分割的 区域包含编码单位(CU)。在图6A的示例中,如Z扫描顺序622那样扫描编码 树块(CTB)600的左上方的四个编码单位(CU),从而到达在图6A的示例中当 前正处理的编码单位(CU)626。将根据Z扫描顺序624扫描编码树块(CTB)600 的其余部分。来自编码树块(CTB)600中的先前解码后的编码单位(CU)的样 本可用于帧内预测。如图6A中的斜线阴影所表示的、来自编码单位(CU)的视 频解码器134尚未进行解码的样本不用于帧内预测。如此,视频编码器114还 将尚未进行解码的样本视为不可用于帧内预测。
图6B是示出相对于当前编码树块(CTB)内的编码单位(CU)而参考邻接 编码树块(CTB)中的样本的块的示例块矢量624的示意框图。在邻接编码树块 (CTB)内参考,这受到当前编码树块(CTB)中的编码单位(CU)的垂直位置所限 制。在图6B的示例中,帧部分620包括属于同一区块和同一条带的两个编码 树块(CTB)。这两个编码树块(CTB)是当前编码树块(CTB)(即,帧部分620的 右半部分和先前编码树块(CTB)(即,帧部分620的左半部分)。在图6B的示例 中,向编码单位(CU)622应用帧内块复制预测。块矢量624相对于编码单位(CU)622的位置而指定参考块626的位置。参考块626是在对样本进行环路滤 波(例如,去块)之前从样本所获得的。因此,需要在去块之前对当前编码树 块(CTB)和先前编码树块(CTB)的样本进行缓冲存储,以提供参考块的所有可 能位置处的样本。
对参考样本进行环路滤波之前使用这些参考样本与帧内预测处理一致。 在帧内预测处理中,由于去块处理会引入对于当前编码单位(CU)内的尚不可 用的样本的依赖性,因此必须在去块之前使用邻接样本。块矢量624包括两 个正整数值(x,y),其中这两个正整数值相对于编码单位(CU)622的位置而将 参考块626的位置指定为向左(水平)位移和向上(垂直)位移。如此,不能指定 将产生对于当前编码树块(CTB)的视频解码器134尚未进行解码的部分(例 如,630)的依赖性的块矢量。例如,鉴于当前编码树块(CTB)的左上象限中 的编码单位(CU)622的位置,上述的坐标方案防止了将当前编码树块(CTB) 的下半部分(例如,630)用于参考块。防止使用当前编码树块(CTB)的下半部 分(例如,630)还防止了使用先前编码树块(CTB)的下半部分(例如,628)。
块矢量624相对于编码单位(CU)622的左上样本位置而指定参考块626 的左上样本位置。如此,禁止了将导致参考块和当前编码单位(CU)重叠的块 矢量。例如,在编码单位(CU)大小为16×16的情况下,允许诸如(-16,0)、(0, -16)、(-17,-18)等的块矢量而禁止诸如(0,0)、(-15,-15)、(-8,0)等的块矢量。 通常,禁止了水平位移和垂直位移这两者都小于编码单位(CU)的宽度和高度 的块矢量。另外,针对先前编码树块(CTB)中的参考块位置的限制导致了帧 内块复制模块350所提供的可用编码效率改进的降低。由于先前编码树块(CTB)整体可用,因此解除该限制以允许先前编码树块(CTB)上的任何位置处 的参考块位置提高了编码效率。
图7A是示出相对于当前编码树块(CTB)内的编码单位(CU)而参考邻接 编码树块(CTB)中的样本的块的示例块矢量704的示意框图。在邻接编码树块 (CTB)内参考,这不受当前编码树块(CTB)中的编码单位(CU)的垂直位置限 制。与图6B相同,图7A所示的示例帧部分700包括当前编码树块(CTB)和先 前编码树块(CTB)。向编码单位(CU)702应用帧内块复制预测。块矢量704在 帧部分700内指定参考块706的位置。与图6B相同,如果参考块将与当前编码 树块(CTB)的尚未解码的任何部分(例如,708)重叠,则禁止块矢量706定位该 参考块。如果参考块将与当前编码单位(CU)702重叠,则还禁止块矢量706 定位该参考块。与图6B相反,块矢量704可以指定x轴和y轴这两者上的正位 移和负位移。
图7B是示出参考跨当前编码树块(CTB)和邻接编码树块(CTB)这两者的 样本的块的示例块矢量724的示意框图。图7B的示例中进行参考的块矢量与 参考样本的块的右上角有关。与图7A相同,帧部分720包括两个编码树块 (CTB)。在图7B的示例中,块矢量724相对于当前正处理的编码单位(CU)722 而指定参考块726的位置。与图7A相同,参考块726可以不与编码单位(CU) 722或者当前编码树块(CTB)的尚未解码的部分(例如,728)重叠。与图7A相 反,块矢量724指定参考块726的右上方的位置。例如,块矢量(0,0)得到与编 码单位(CU)邻接的参考块。可以定义变量“cu_size”,从而表示编码单位(CU) 722的宽度或高度。在这些配置中,可以通过编码单位(CU)722的位置、块 矢量724和被定义为(-cu_size,0)的偏移矢量的矢量相加来指定参考块726的 位置。其它偏移矢量也是可以的,例如(0,-cu_size)或(-cu_size,-cu_size)。
图8A是示出参考跨帧部分800内的当前编码树块(CTB)和邻接编码树块 (CTB)810这两者的样本的块的示例块矢量804的示意框图。编码树块(CTB) 810(例如,由于属于与当前编码树块(CTB)不同的区块)被标记为不可用。如 此,参考块806局限于仅使用当前编码树块(CTB)内的样本。块矢量804相对 于编码单位(CU)802的位置而指定参考块806的位置。块矢量804指定与编码 树块(CTB)810重叠的参考块。由于来自编码树块(CTB)810的样本被标记为 不可用,因此使用替代值来填充参考块806的编码树块(CTB)810部分。在一 个配置中,可以使用诸如邻接样本不可用于帧内预测的情况下所使用的默认 值等的默认值来填充参考块806的重叠部分。例如,在视频编码器114是针对 位深度八(8)所配置的情况下,所使用的默认值是一百二十八(128),并且在 视频编码器114是针对位深度十(10)所配置的情况下,所使用的默认值是五百 一十二(512)。填充参考块806的重叠部分的其它方法也是可以的。例如,在 视频编码器114的一个配置中,可以使用非重叠部分的边缘处(即,当前编码 树块(CTB)内)的样本值来填充参考块806的重叠部分。可以通过根据当前编 码树块(CTB)剪切参考块806内的样本的坐标来使用非重叠部分的边缘处的 样本值,由此禁止向编码树块(CTB)810的访问。
图8B是示出参考当前编码树块(CTB)内的样本的块的示例调整后的块 矢量824的示意框图。在图8B的示例中,调整后的块矢量824没有参考来自被 标记为不可用的邻接编码树块(CTB)830的任何样本。帧部分820包括获得参 考块826所依据的两个编码树块(CTB)。由于编码树块(CTB)830(例如,因属 于不同的区块)被标记为不可用于参考,因此参考块826可以不使用来自编码 树块(CTB)830的样本来进行参考。在图8B的示例中,剪切后的块矢量824相 对于编码单位(CU)822而指定参考块826的位置。在视频编码器114和视频解 码器134的一个配置中,剪切后的块矢量824可以是根据编码位流312中所存 在的块矢量(例如,等于图8A的块矢量804)所推导出的。在根据编码位流312 中所存在的块矢量推导出剪切后的块矢量824的配置中,可以使用剪切操作 来防止参考块826与不可用的编码树块(CTB)830重叠。
图8C是示出参考样本的块846的示例块矢量844的示意框图,其中使用帧 间预测来对所参考的样本中的一部分进行解码。帧部分840包括获得参考块 846所依据的两个编码树块(CTB)。在图8C的示例中,视频编码器114和视频 解码器134被配置为使用“约束帧内预测”。约束帧内预测是如下模式:帧内 预测处理所用的邻接样本可以仅从其它帧内预测(或帧内块复制)的编码单位 (CU)来获得。如此,在启用约束帧内预测模式的情况下,使用帧间预测所预 测的编码单位(CU)可以不用于提供帧内预测所用的邻接样本。帧间预测的编 码单位(CU)依赖于先前帧以供参考。在一些情况下,(例如,由于通信信道 120中的传输错误)在视频解码器134处不可用先前帧。在视频解码器134处可 用先前帧的情况下,由于期望的参考块不可用,因此将一些其它信息填充到 帧间预测的编码单位(CU)中。约束帧内预测通过防止由于丢失帧所产生的错 误数据传播到帧内预测的编码单位(CU)中,改善了差错恢复。帧间预测的编 码单位(CU)由此被视为不可用于在启用约束帧内预测的情况下由帧内预测 的编码单位(CU)进行参考。帧内块复制模式通过将帧间预测的编码单位(CU)视为不可用于参考而具有相同的约束。以下将参考图17A来说明用于生成针 对编码单位(CU)的参考样本块的方法1700。
以下参考图10来说明用于使用帧内块复制模式对编码单位(CU)的编码 单位(CU)句法结构(例如,参见图9的902)进行编码的方法1000。使用方法1000 的视频编码器114的配置可以针对帧内块复制模式来禁止会导致访问来自帧 间预测的编码单位(CU)的任何样本的块矢量。在使用方法1000的配置中,可 以使用规范限制,其中该规范限制表明在编码位流312中可能不存在将产生 需要来自帧间预测块的样本的参考块的帧内块矢量。在使用方法1000的配置 中,块搜索的步骤1002不进行针对将产生不合格位流的这些块矢量的搜索。 由于产生需要来自帧间预测块的样本的参考块的位流是“不合格”位流并且 不需要解码器对这些位流进行解码,因此在将发生该情形的情况下,视频解 码器134可能以未定义的方式工作。图8C的块矢量846是将会产生不合格位流 的块矢量的示例。
视频编码器114被配置成不产生不合格位流。如此,视频编码器114的配 置可以包括帧内块复制模块350中的用以防止搜索这些不合格的块矢量的逻 辑。在视频编码器114的一个配置中,帧内块复制模块350(在率失真意义上) 产生要测试的许多不同块矢量。中止针对会产生不合格位流的任何块矢量的 测试。
可选地,在视频编码器114的一个配置中,可以使用默认样本值来提供 针对参考块的与帧间预测的编码单位(CU)重叠的任何部分的样本值。在图8C 的示例中,编码单位(CU)848是帧间预测的编码单位(CU),并且视频编码器 114使用约束帧内预测来处理编码单位(CU)848。因而,代替使用从编码单位 (CU)848获得的样本值,参考块846的与编码单位(CU)848重叠的部分使用默 认样本值。在最小编码单位(SCU)大小为8×8的情况下,编码树块(CTB)的预 测模式需要8×8阵列的标志以表示对哪些编码单位(CU)进行帧间预测。在这种配置中,修改帧内块复制步骤1018和帧内块复制步骤1140以利用默认样本 值填充重叠部分(即,与帧间预测的编码单位(CU)重叠的部分)。
图8D是示出参考如下样本的块的示例块矢量864的示意框图,其中参考 块866包括当前编码单位(CU)862内的样本。帧部分860包括获得参考块866 所依据的两个编码树块(CTB)。由于尚未确定当前编码单位(CU)内的样本, 因此无法使用当前编码单位(CU)内的样本作为参考块806的一部分。
在一个配置中,代替不可用的样本值,可以提供默认样本值。默认样本 值可以是以与在邻接样本被标记为不可用于参考的情况下帧内预测所用的 默认样本值相同的方式推导出的。在这种配置中,修改帧内块复制步骤1018 和帧内块复制步骤1140以利用默认样本值来填充重叠部分(即,与当前编码单 位(CU)重叠的部分)。图9是示出位流312的部分900内的编码单位(CU)句法结 构902的示意框图。编码位流312包括句法元素序列,其中该句法元素序列例 如被分割成条带、帧、依赖条带片段、独立条带片段或区块。将句法元素组织成层级“句法结构”。一个这种句法结构是编码单位(CU)句法结构902。编 码单位(CU)句法结构的实例针对条带、区块或帧中的各编码单位(CU)而存 在。编码单位(CU)句法结构的实例的上下文可以防止存在特殊句法元素。例 如,在被表示为仅使用帧内预测的条带内的编码单位(CU)句法结构中不存在 与帧间预测有关的句法元素。在帧内块复制功能可用并且在使用中的情况 下,可以使用编码单位(CU)句法结构902。
如图9所示,编码单位(CU)句法结构902包括其它句法元素和句法结构 (例如,904~918)。变换量化旁路标志904(“cu_transquant_bypass_flag”)用信 号通知将“变换量化旁路”模式用于编码单位(CU)。如果高等级句法中所存在 的“transquant_bypass_enabled_flag”为真,则存在变换量化旁路标志904。与 是否启用帧内块复制无关地用信号通知变换量化旁路标志904,因而可以将 帧内块复制应用于无损编码情况和有损编码情况这两者。
在针对可能是帧间预测的条带中的编码单位(CU)的编码位流312中存在 跳过标志906(“cu_skip_flag”)。跳过标志906用信号通知编码单位(CU)包括帧 间预测的预测单位(PU)、并且在针对与该编码单位(CU)相关联的预测单位 (PU)的编码位流312中不存在残差或运动矢量差。在这种情况下,包括了预 测单位(PU)句法结构,并且该预测单位(PU)句法结构可以得到包括一个句法 元素,以指定将推导针对编码单位(CU)的运动矢量所依据的邻接预测单位 (PU)。在跳过标志906表示跳过编码单位(CU)的使用的情况下,编码单位(CU) 句法结构不包括更多的句法元素。如此,跳过标志906提供用以表示编码位 流312中的编码单位(CU)的有效方式。跳过标志906可用在不需要残差(即, 帧间预测的参考块与帧数据310的相应部分非常接近或相同)的情况中。在没 有跳过编码单位(CU)的情况下,编码单位(CU)句法结构902引入了附加句法 元素以进一步指定编码单位(CU)的配置。
使用预测模式标志908(图9中的“PMF”、或者“pred_mode_flag”)来用信号 通知将帧内预测或帧间预测用于编码单位(CU)。对于帧间预测不可用的条带 中的编码单位(CU),没有用信号通知预测模式标志908。如果预测模式标志 908表示编码单位(CU)被配置为使用帧内预测并且帧内块复制启用标志为 真,则在编码位流312中存在帧内块复制标志910(或“intra_bc_flag”)。
帧内块复制标志910用信号通知将帧内块复制模式用于编码单位(CU)。 帧内块复制标志910用于表示当前样本基于当前帧的先前解码样本。
将帧内块复制启用标志编码作为高等级句法。在编码单位(CU)没有正使 用帧内块复制模式、并且任意(或这两个)预测模式标志表示将帧间预测用于 编码单位(CU)或者编码单位(CU)大小等于最小编码单位(SCU)的情况下,在 编码位流312中存在分区模式912句法元素。分区模式912表示将编码单位(CU) 分割成一个或多个预测单位(PU)。在多个预测单位(PU)包含在编码单位(CU) 中的情况下,分区模式912还表示编码单位(CU)内的预测单位(PU)的几何配 置。例如,编码单位(CU)可以包含通过分区模式912所指定的编码单位(CU) 的水平分割(例如,“PART_2N×N”)或垂直分割(例如,“PART_N×2N”)所得到 的两个矩形预测单位(PU)。如果一个预测单位(PU)占据整个编码单位(CU), 则分区模式是“PART_2N×2N”。将帧内块复制模式应用于整个编码单位 (CU),因而没有用信号通知分区模式并且表示该分区模式是 “PART_2N×2N”。如果帧内块复制模式处于使用中,则在编码位流312中存 在被编码为块矢量914的块矢量。
块矢量914相对于编码单位(CU)而指定参考块的位置。可选地,块矢量 914可以相对于诸如包含编码单位(CU)的编码树块(CTB)等的一些其它实体 而指定参考块的位置。块矢量914包括水平偏移和垂直偏移,并且可以重复 使用预先存在的句法结构。例如,可以使用“运动矢量差”句法结构来将块矢 量的水平偏移和垂直偏移编码在编码位流312中。
根编码块标志916(或“rqt_root_cbf”)用信号通知编码单位(CU)内的残差 数据的存在。如果标志916的值为0,则在编码单位(CU)中不存在残差数据。 如果标志916的值为1,则在编码单位(CU)中存在至少一个有效残差系数,因 而在编码单位(CU)中存在残差四叉树(RQT)。在这些情况下,变换树918句法 结构将残差四叉树(RQT)的最高层级等级编码在编码位流312中。根据编码单 位(CU)的残差四叉树层级,在变换树918句法结构中存在变换树句法结构和 变换单位句法结构的附加实例。
现在将说明用于使用帧内块复制模式来对编码单位(CU)的编码单位 (CU)句法结构(例如,902)进行编码的方法1000。方法1000可被实现为实现视 频编码器114的软件代码模块中的一个或多个,其中这些软件代码模块驻留 在硬盘驱动器210中并且由处理器205控制其执行。方法1000可以由视频编码 器114使用以将图9的编码单位(CU)句法结构900编码到编码位流312中。
方法1000从块搜索的步骤1002开始,其中在该步骤1002中,处理器205 用于在当前和/或先前编码树块(CTB)内搜索参考块。在步骤1002中测试一个 或多个块矢量,并且通过测量失真来测量编码树块(CTB)和重建样本数据之 间的匹配。此外,在步骤1002中,基于编码位流312的位率来测量将块矢量 编码在编码位流312中的成本。在所测试的块矢量中,基于所确定的位率和 失真来选择视频编码器114所利用的块矢量以供视频编码器114使用。可以将 所选择的块矢量存储在存储器206中。如上所述,在步骤1002中可以使用任 何适当的搜索算法来选择块矢量。可以进行针对每个可能的块矢量的全面搜 索。然而,例如对于视频编码器114的实时实现而言,进行全面搜索的复杂 度通常是不可接受的。可以使用其它搜索方法,诸如搜索相对于当前编码单 位(CU)呈水平或垂直(或者近水平和近垂直)的参考块。
在对编码单位变换量化旁路标志进行编码的步骤1004中,熵编码器320 在处理器205的执行下将编码单位变换量化旁路标志(例如,904)编码到编码 位流312中,其中该编码位流312可被存储在存储器206中。变换量化旁路标 志在正进行编码单位(CU)的无损编码的情况下具有值1,并且在正进行编码 单位(CU)的有损编码的情况下具有值零。
然后,在对编码单位跳过标志进行编码的步骤1006中,熵编码器320在 处理器205的执行下,将跳过标志(例如,906)编码到编码位流312中。该跳过 标志用信号通知是否将跳过针对编码单位(CU)的运动矢量差和残差的编码。 如果跳过针对编码单位(CU)的运动矢量差和残差的编码,则根据先前运动矢 量(例如,根据与当前编码单位(CU)邻接的块)来推导针对编码单位(CU)的运 动矢量。此外,针对所跳过的编码单位(CU),在编码位流中不存在残差。
在对pred_mode_flag进行编码的步骤1008中,熵编码器320在处理器205 的执行下将预测模式(例如,908)编码到针对编码单位(CU)的预测模式标志 (即,pred_mode_flag)中,并且将该预测模式标志存储在存储器206中。通常, pred_mode_flag表示针对编码单位(CU)的帧内预测模式(即, “MODE_INTRA”)和帧间预测模式(即,“MODE_INTER”)其中之一。在帧内 块复制模式处于使用中的情况下,尽管编码单位(CU)的预测模式可以是“MODE_INTRABC”,但可以将pred_mode_flag设置为“MODE_INTRA”。然 后,在对预测模式进行测试的步骤1009中,处理器205测试针对编码单位(CU) 的预测模式。如果预测模式是帧间预测,则控制进入对mvd_coding进行编码 的步骤1012。在这种情况下,intra_bc_flag没有编码在编码位流312中,从而 得到改进的编码效率。否则,控制进入对intra_bc_flag进行编码的步骤1010。 在对intra_bc_flag进行编码的步骤1010中,熵编码器320在处理器205的执行 下将帧内块复制标志(即,intra_bc_flag)(例如,910)编码到编码位流312中。
在对mvd_coding进行编码的步骤1012中,熵编码器320在处理器205的执 行下,使用还用于对运动矢量差进行编码的运动矢量差(即,“mvd_coding”) 句法结构来将块矢量编码到编码位流312中。然后,在对root cbf进行编码的 步骤1014中,熵编码器320在处理器205的执行下,将根编码块标志(即, root_cbf标志)编码到编码位流312中。root_cbf标志用信号通知在编码单位 (CU)的残差四叉树(RQT)中存在至少一次变换(即,具有至少一个有效残差系 数)。
然后,在对变换树进行编码的步骤1016中,熵编码器320在处理器205的 执行下,根据根编码块标志来对编码单位(CU)的变换树(即,残差四叉树 (RQT))进行编码。在根编码块标志(即,root_cbf标志)表示在残差四叉树(RQT) 中存在至少一次变换的情况下,进行步骤1016。
在帧内块复制步骤1018中,使用步骤1002中所选择的块矢量来产生参考 块。参考块是通过复制样本的阵列所产生的。样本的阵列具有与编码单位(CU) 大小相等的大小。参考样本阵列的位置相对于当前编码单位(CU)根据块矢量 而发生偏移。参考样本是在环路滤波之前获得的,因而是从样本370获得的。 步骤1018中所产生的参考块可以由处理器205存储在存储器206中。
方法1000在重建的步骤1020结束,其中在该步骤1020中,求和模块342 将步骤1018中所产生的参考块与残差相加以确定重建块(即,作为样本370的 一部分)。该参考块由多路复用器模块340在处理器205的执行下选择作为用 于当前编码单位(CU)的帧内块复制模式。
图11是示出用于从编码位流312中解码图9的编码单位(CU)句法结构902 的方法1100的示意流程图。方法1100可被实现为实现视频解码器134的软件 代码模块中的一个或多个,其中这些软件代码模块驻留在硬盘驱动器210上 并且由处理器205控制其执行。例如在视频解码器134正对与编码单位(CU) 相关联的句法元素进行解析的情况下,可以利用视频解码器134来进行方法 1100。
方法1110测试具有通过对句法元素进行解码而先前可能已推导出的值 的变量。在没有对句法元素进行解码的情况下,这些变量其中之一通常具有 表示“禁用”状态的默认值。方法1100从变换量化旁路启用测试步骤1102开 始,其中在该步骤1102中,处理器105用于通过检查先前解码后的标志值(例 如,“transquant_bypass_enabled_flag”)来测试变换量化旁路模式是否可用于编 码单位(CU)。如果变换量化旁路模式可用,则控制进入对transquant_bypass_flag(例如,“cu_transquant_bypass_flag”)进行解码的步骤 1104。否则,控制进入条带类型测试步骤1106,并且表示不使用变换量化旁 路模式。
在对transquant_bypass_flag进行解码的步骤1104中,熵解码器模块420在 处理器205的执行下,从编码位流312解码标志(即, “cu_transquant_bypass_flag”)。cu_transquant_bypass_flag表示编码单位(CU) 是否使用变换量化旁路模式。如此,cu_transquant_bypass_flag使得帧数据310 的一部分能够与要以无损方式表示的编码单位(CU)同位置。
在条带类型测试步骤1106中,处理器205用于判断编码单位(CU)所存在 于的条带是仅支持帧内预测(即,“slice_type==I”)还是支持帧内预测和帧间 预测这两者(即,“slice_type!=I”)。如果帧内预测是唯一可用的预测机制, 则控制进入cu_skip_flag测试的步骤1110。否则,控制进入对cu_skip_flag进行 解码的步骤1108。
在对cu_skip_flag进行解码的步骤1108中,熵解码器模块420在处理器205 的执行下,从编码位流312解码跳过标志(“cu_skip_flag”)。该跳过标志表示是 否使用“跳过模式”对编码单位(CU)进行编码。在“跳过模式”中,在编码位流 312中不存在运动矢量差或残差信息。
然后,在cu_skip_flag测试步骤1110中,处理器205用于测试跳过标志 cu_skip_flag的值。如果跳过标志为真,则控制进入预测单位步骤1112。否则, 控制进入条带类型测试1114。
在预测单位步骤1112中,编码单位(CU)由处理器205配置为使用“跳过模 式”。在跳过模式中,不从编码位流312解码运动矢量差和残差信息。根据一 个或多个邻接块的运动矢量来推导运动矢量。根据该运动矢量,利用运动压 缩模块434来产生参考样本的块。由于不存在针对该编码单位(CU)的残差信 息,因此去量化模块421和逆变换模块422不工作。参考样本由去块模块430 进行去块并且由此得到的样本被存储在帧缓冲器模块432中。在条带类型测 试步骤1114中,处理器205用于判断编码单位(CU)所存在于的条带是仅支持帧内预测(即,“slice_type==I”)还是支持帧内预测和帧间预测这两者(即, “slice_type!=I”)。如果帧内预测是唯一可用的预测机制,则控制进入预测模 式测试步骤1117。否则,控制进入对预测模式标志进行解码的步骤1116。
在预测模式标志步骤1116中,熵解码器420在处理器205的执行下,从编 码位流312解码预测模式标志以用来判断针对编码单位(CU)的预测模式。该 预测模式标志表示编码单位(CU)使用帧内预测(即,“MODE_INTRA”)还是帧 间预测(即,“MODE_INTER”)。在预测模式测试步骤1117中,处理器205用 于判断编码单位(CU)的预测模式是否是帧内预测(即,“MODE_INTRA”)。如 果编码单位(CU)的预测模式是帧内预测(即,“MODE_INTRA”),则控制进入 intra_bc_enabled_flag测试步骤1118。否则,控制进入intra_bc_flag测试步骤 1122。
在intra_bc_enabled_flag测试步骤1118中,处理器205用于通过检查标志 值(例如,来自序列参数集的“intra_block_copy_enabled_flag”)来判断帧内块复 制模式是否可用在编码单位(CU)中。步骤1118中所检查的标志值是由熵解码 器模块420先前从编码位流312进行解码得到的,从而作为“高等级句法”的一 部分。如果帧内块复制模式可用,则控制进入对intra_bc_flag进行解码的步 骤1120。否则,控制进入intra_bc_flag测试步骤1122。
然后,在对intra_bc_flag进行解码的步骤1120中,熵解码器420在处理器 205的执行下,用于从编码位流312中解码用于表示将帧内块复制模式用于编 码单位(CU)的标志(例如,“intra_bc_flag”)。如果所判断出的预测模式是帧内 预测,则从编码位流312中解码帧内块复制标志(即,“intra_bc_flag”)。以下 将参考图12和13来进一步说明熵解码器420在进行对intra_bc_flag进行解码 的步骤1120时的操作。
在intra_bc_flag测试步骤1122中,处理器205用于测试intra_bc_flag的值。 如果intra_bc_flag被设置为真,则控制进入分区模式编码测试步骤1124。否则, 控制进入cu_type测试步骤1128。
然后,在分区模式编码测试步骤1124中,在处理器205的执行下,测试 编码位流312中存在“part_mode”句法元素的条件。如果编码单位(CU)预测模 式不是帧内预测(即,不是MODE_INTRA)或者编码单位(CU)大小等于最小编 码单位(SCU)大小,则控制进入对part_mode进行解码的步骤1126。否则,控 制进入cu_type测试步骤1128。
如果跳过步骤1126,则始终针对使用帧间预测的编码单位(CU)来编码 “part_mode”。对于使用帧内预测的编码单位(CU),如果编码单位(CU)大小大 于最小编码单位(SCU)大小,则推断出分区模式是“PART_2N×2N”(即,一个 预测单位(PU)占据整个编码单位(CU))。如果编码单位(CU)大小等于最小编 码单位(SCU)大小,则从编码位流312解码分区模式并且该分区模式在 “PART_2N×2N”和“PART_N×N”之间进行选择。“PART_N×N”模式将编码单 位(CU)分割成四个正方形的非重叠预测单位(PU)。
在对分区模式进行解码的步骤1126中,熵解码器420在处理器205的执行 下从编码位流312中解码part_mode句法元素。注意,由于步骤1122,因此在 帧内块复制模式处于使用中的情况下没有从编码位流312解码part_mode。在 这些情况下,可以推断出编码单位(CU)的分区模式是“PART_2N×2N”。
然后,在cu_type测试步骤1128中,在处理器205的执行下,通过测试编 码单位类型标志cu_type来测试编码单位(CU)的预测模式。如果编码单位类型 标志cu_type表示预测模式是帧内预测(即,“CuPredMode== MODE_INTRA”),则控制进入intra_bc_flag测试步骤1030。否则,控制进入 intra_pred模式步骤1034。
在intra_bc_flag测试步骤1130中,处理器205用于测试帧内块复制特征是 否被编码单位(CU)使用。如果帧内块复制特征被编码单位(CU)使用,则控制 进入对块矢量进行解码的步骤1132。否则,控制进入intra_pred模式步骤1134。
然后,在对块矢量进行解码的步骤1132中,熵解码器420在处理器205的 执行下用于从编码位流312中解码帧内复制模式所用的块矢量。通常使用诸 如用于运动矢量差的“mvd_coding”句法结构等的现有句法结构来将该块矢 量编码在编码位流312中。在步骤1132之后,控制进入对根编码块标志进行 解码的步骤1036。
在intra_pred模式步骤1134中,熵解码器420在处理器205的执行下从编码 位流312中解码针对编码单位(CU)中的各预测单位(PU)的帧内预测模式。该 帧内预测模式指定使用三十五个可能模式中的哪一个模式来在编码单位(CU) 的各预测单位(PU)中进行帧内预测。
然后,在对根编码块标志进行解码的步骤1136中,熵解码器420在处理 器205的执行下从编码位流312中解码根编码块标志rqt_root_cbf。根编码块标 志rqt_root_cbf指定针对编码单位(CU)是否存在任何残差信息(即,至少一个 有效系数在编码单位(CU)内的任意变换单位(TU)中)。如果存在与编码单位 (CU)相关联的残差信息,则在对变换树进行解码的步骤1138中,熵解码器420 在处理器205的执行下从编码位流312中解码变换树(或“残差四叉树”)。该变 换树包括用以表示残差四叉树的层级结构和针对各变换单位(TU)的残差系 数的信号通知。
在帧内块复制步骤1140中,帧内块复制模块436在处理器205的执行下通 过复制位于当前和/或先前编码树块(CTB)内的样本值(或样本)的块(或阵列) 来产生参考块。因此,根据先前解码样本来针对参考块确定样本值。通过向 当前编码单位(CU)的坐标添加块矢量来确定参考块的位置。帧内块复制模块 436由此用于基于步骤1116中解码后的帧内块复制标志来从编码位流312中 解码参考块的样本值。步骤1140中的针对样本值的块的复制可被称为帧内块 复制。
然后,在重建步骤1142中,在求和模块424中将预测单位(PU)466(即, 参考块)与残差样本阵列456相加以产生总和458(即,重建样本)。然后,在步 骤1142之后,方法1100终止。
在根据图8A的方法1100的一个配置中,修改帧内块复制步骤1140,使得 将“默认值”用于与不可用的邻接编码树块(CTB)重叠的参考样本。以下参考 图17C和17D来更详细地说明该配置。
在根据图8B的方法1100的一个配置中,(例如,在对块矢量进行解码的 步骤1132中)修改方法1100,使得对解码后的块矢量(例如,824)进行剪切以 防止任何不可用的样本(例如,830)包括在参考样本块(例如,826)中。
现在将参考图12来说明针对编码单位(CU)的帧内块复制标志(例如,910) 的上下文选择。如以下所述,视频解码器114可被配置为与针对邻接块的帧 内块复制标志的值无关地选择帧内块复制标志的上下文。在图12的示例中, 帧部分1200包括诸如编码树块(CTB)1202和1204等的编码树块(CTB)。按光 栅顺序扫描帧部分1200中的编码树块(CTB)。如图6A所示,按Z顺序扫描各 编码树块(CTB)1202和1204内的编码单位(CU)。编码单位(CU)1210在利用编 码位流312中的intra_bc_flag进行信号通知的情况下,使用帧内块复制模式。
利用从三个可能的上下文中所选择的上下文,使用上下文自适应二进制 算术编码来对intra_bc_flag进行编码。使用邻接块的intra_bc_flag值来判断使 用哪个上下文。使用当前块的上方邻接块(例如,1212)和左方邻接块(例如, 1214),这是因为这些块先前已被解码并且因而intra_bc_flag值可用于视频解 码器134。如果邻接块不可用(例如,邻接块在不同的条带或区块中、或者当 前块处于帧的边缘),则将为了上下文选择的目的而将邻接块intra_bc_flag值 设置为0。上下文索引具有0~2的值,并且是通过将左方intra_bc_flag值与右 方intra_bc_flag值相加所确定的。为了相加的目的,将诸如“启用”、“真”或“设 置”等的intra_bc_flag值视为1,并且将诸如“禁用”、“假”或“清零”等的 intra_bc_flag值视为0。在编码树块(CTB)的大小为64×64并且最小编码单位 (SCU)大小为8×8的情况下,在编码树块(CTB)内存在intra_bc_flag的8×8阵列。 需要存储intra_bc_flag的8×8阵列,以满足intra_bc_flag上下文选择的依赖性。 沿着编码树块(CTB)的左边缘,可能需要沿着先前编码树块(CTB)的右边缘的 八个intra_bc_flag。另外,由于编码树块(CTB)的扫描是以光栅扫描方式发生 的,因此需要对于沿着整个帧的行即宽度的大小为8×8的编码单位(CU)而言 足够的intra_bc_flag的阵列,以满足针对“上方”intra_bc_flag的依赖性。例如, 块1212位于编码树块(CTB)的先前行中,因而需要针对与块1212相对应的intra_bc_flag的存储量。该存储量是针对沿着编码树块(CTB)的行的所有可能 块位置而提供的。作为对比,块1220不位于沿着编码树块(CTB)的顶部的位 置,因此取邻接块(即,1222和1224)的intra_bc_flag值。
对于HD图像(即,1920×1080分辨率),存储intra_bc_flag所需的缓冲器大 小是二百四十(240)个标志。对于超出HD的图像分辨率,存在通常被称为 “4K2K”的多个变体。一个变体是分辨率为3840×2160的“超HD”。另一变体是 分辨率为4096×2160的“数字电影”。针对4K2K分辨率存储intra_bc_flag所需的 缓冲器大小高达五百一十二(512)个标志。通常针对各编码单位(CU)对 intra_bc_flag缓冲器进行一次访问,这样得到用于确定单个标志的上下文索 引的相对较高的存储器带宽。对于视频编码器114和视频解码器134的硬件实 现,可以使用片上静态RAM来缓冲intra_bc_flag。对于视频编码器114和视频 解码器134的软件实现,intra_bc_flag缓冲器可以驻留在L1高速缓存器中,这 样消耗了有价值的高速缓存线。
在一个配置中,可以通过将一个上下文用于intra_bc_flag来简化 intra_bc_flag的上下文选择。这些配置由于去除了用以保持先前解码后的 intra_bc_flag值的缓冲器因而复杂度降低。通过减少存储器访问并且避免用 以确定上下文索引的计算,获得了将一个上下文用于intra_bc_flag的额外优 点。通常,减少对诸如intra_bc_flag等的句法元素进行编码可用的上下文的 数量,这导致编码效率下降。
方法1000所产生的并且利用方法1100可解码的编码位流312仅包括针对 被指示使用帧内预测的编码单位(CU)的intra_bc_flag(即,pred_mode表示 MODE_INTRA)。如此,针对帧间预测的编码单位(CU),在编码位流312中 不存在intra_bc_flag。如此以使帧内块复制模式仅在pred_mode句法元素表示 将帧内预测用于编码单位(CU)的情况下可用为代价,实现了针对帧间预测的 编码单位(CU)的编码效率的提高。
通常帧内预测所产生的预测与帧间预测所产生的预测相比存在更大的 失真。输出帧内预测中的失真量较高导致了进一步将该失真校正为可接受水 平(即,如根据量化参数所推导出的)所需的残差信息量增加。残差信息量较 高通常会导致帧内预测帧与帧间预测帧相比消耗编码位流312的更大部分。 对于对编码效率高度敏感的应用,如此尽可能多地使用帧间预测。如此,去 除针对帧间预测的编码单位(CU)的intra_bc_flag的信号通知是有益的。
图13是示出图4的熵解码器模块420的功能模块1302、1304、1306和1308 的示意框图。熵解码器模块420的功能模块1302、1304、1306和1308可被实 现为实现视频解码器模块134的软件应用程序233的一个或多个软件代码模 块。熵解码器模块420使用上下文自适应二进制算术编码。将编码位流312提 供至二进制算术解码器模块1302。向二进制算术解码器模块1302提供来自上 下文存储器1304的上下文。该上下文表示解码中的标志的(或“符号”)的可能 值和该标志的概率等级。该上下文是根据上下文索引确定器1306所提供的上下文索引来选择的。上下文索引确定器1306通过使用来自邻接编码单位(CU) 的intra_bc_flag的值来确定intra_bc_flag的上下文索引。
图14是示出用于对编码单位(CU)的帧内块复制标志进行解码的方法 1400的示意流程图。方法1400通常由熵解码器模块420或熵编码器模块324来 进行。方法1400可被实现为实现视频解码器134或视频编码器114的软件代码 模块中的一个或多个,其中这些软件代码模块驻留在硬盘驱动器210中并且 由处理器205控制其执行。以下以利用视频解码器134执行方法1400作为示例 来说明方法1400。
方法1400从上方标志可用测试步骤1402开始,其中在该步骤1402中,处 理器205用于测试上方块(即,当前块的上方邻接块)中的intra_bc_flag是否可 用(例如,推导“availableA”变量)。可以将上方块中的intra_bc_flag称为“上方 标志”。如果当前块在帧的顶部,则上方intra_bc_flag不可用。如果上方块在 与当前块不同的条带片段中,则上方intra_bc_flag不可用。如果上方块在与 当前块不同的区块中,则上方intra_bc_flag不可用。如果不满足上述条件, 则上方块可用(即,“availableA”为真)。
如果在步骤1402中上方intra_bc_flag不可用(即,“availableA”为假),则控 制进入左方标志可用测试步骤1406。否则,控制进入读取上方intra_bc_flag 步骤1404。
在读取上方intra_bc_flag的步骤1404中,在处理器205的执行下,从存储 器206内所配置的标志高速缓存模块1308读取针对当前编码单位(CU)上方的 编码单位(CU)的intra_bc_flag值(即,“condA”)。在使当前编码单位(CU)沿着 当前编码树块(CTB)的顶部对准的情况下,正读取的intra_bc_flag来自于属于 当前编码树块(CTB)上方的编码树块(CTB)的行的编码单位(CU)。由于(在一 个区块内)以光栅顺序处理编码树块(CTB)并且最小编码单位(SCU)大小通常 为8×8,因此针对帧宽度的每八(8)个样本,将一个intra_bc_flag存储在标志高 速缓存模块1308中。对于“4K2K”帧,(例如,在存储器206内)缓冲存储多达 五百一十二(512)个intra_bc_flag以满足针对上方intra_bc_flag的依赖性。由于intra_bc_flag缓冲器保持与帧的一整条线(例如,最小编码单位(SCU)的线或样 本的线)有关的信息,因此可以将intra_bc_flag缓冲器称为“线缓冲器”。
由于频繁地访问帧内块复制标志(即,针对各编码单位(CU)一次),因此 可以将帧内块复制标志存储在片上静态RAM中或者存储器206的高速缓冲存 储器中。标志高速缓存模块1308中的这种存储器(例如,在硅面积方面或在 存储器带宽方面)的成本很高。在当前编码单位(CU)没有沿着当前编码树块 (CTB)的顶部对准的情况下,正读取的intra_bc_flag来自于属于当前编码树块 (CTB)的编码单位(CU)。根据编码树块(CTB)的编码树层级来按Z扫描顺序扫 描编码单位(CU)。
对于完整包括最小编码单位(SCU)大小的编码单位(CU)的编码树块 (CTB),在标志高速缓存模块1308中需要8×7(即,56)个intra_bc_flag的阵列以 满足针对上方intra_bc_flag的依赖性。宽度8是由于将六十四(64)个样本的编 码树块(CTB)宽度分割成八个最小编码单位(SCU)所引起的。高度7是由于将 六十四(64)个样本的编码树块(CTB)高度分割成八行最小编码单位(SCU)所 引起的。八行中的七行位于当前编码树块(CTB)中,并且一行位于上方编码 树块(CTB)中(即,如上所述单独缓冲存储在上方编码树块(CTB)中)。
然后,在左方标志可用测试步骤1406中,处理器205用于判断针对当前 编码单位(CU)的左方邻接的编码单位(CU)的intra_bc_flag是否可用。可以将 针对当前编码单位(CU)的左方邻接的编码单位(CU)的intra_bc_flag称为“左 方标志”。如果当前编码单位(CU)与帧的左方对准,则左方intra_bc_flag被视 为不可用。如果左方编码单位(CU)属于与当前编码单位(CU)不同的条带,则 左方intra_bc_flag被视为不可用。如果左方编码单位(CU)属于与当前编码单 位(CU)不同的区块,则左方intra_bc_flag被视为不可用。如果不满足这些条 件,则左方intra_bc_flag被视为可用(即,“availableL”为假)。如果左方intra_bc_flag不可用,则控制进入判断上下文索引步骤1410。否则(即, “availableL”为真),则控制进入读取左方标志步骤1408。
在读取左方标志步骤1408中,在处理器205的执行下读取针对当前编码 单位(CU)的左方邻接的编码单位(CU)的intra_bc_flag值(即,“condL”)(即,读 取左方标志)。如果当前编码单位(CU)沿着当前编码树块(CTB)的左边缘对 准,则从用于保持针对沿着先前编码树块(CTB)的右边缘的(多达)八个最小编 码单位(SCU)的intra_bc_flag值的八个intra_bc_flag的缓冲器中读取 intra_bc_flag。如果当前编码单位(CU)没有沿着当前编码树块(CTB)的左边缘 对准,则从针对当前编码树块(CTB)内的最小编码单位(SCU)大小的邻接编码 单位(CU)的intra_bc_flag的7×8缓冲器中读取标志。7×8的缓冲器大小是通过在“最差情况下”下将64×64编码树块(CTB)分割成64个(即,8×8网格)8×8编码 单位(CU)所得到的,其中从当前编码树块(CTB)内参考七个列的intra_bc_flag 并且从先前(左方)编码树块(CTB)内参考一列的intra_bc_flag。针对上方 intra_bc_flag的8×7 intra_bc_flag缓冲器和针对左方intra_bc_flag的8×7缓冲器 在很大程度上重叠。由于该重叠,在标志高速缓存模块1308中需要一个六十 三(63)或六十四(64)标志缓存器(即,不访问8×8标志缓冲器和右下方的标志, 因此可以省略这两者),以在当前编码树块(CTB)内提供上方intra_bc_flag和左 方intra_bc_flag这两者。
然后,在确定上下文索引步骤1410中,在处理器205的执行下确定针对 当前编码树块(CTB)的intra_bc_flag的上下文索引。该上下文索引是零(0)、一 (1)和二(2)其中之一。在上下文存储器1304是保持各种句法元素的上下文的 连续存储器的情况下,在上下文索引中隐含偏移(这里没有进一步论述),以 表明将针对intra_bc_flag的上下文存储在存储器206内所配置的上下文存储 器1304中。上下文索引是左方intra_bc_flag值和上方intra_bc_flag值的总和(布 尔值在假的情况下被解释为“0”并且在真的情况下被解释为“1”)。如果左方 intra_bc_flag不可用,则对于求和计算,左方intra_bc_flag被视为零。如果上 方intra_bc_flag不可用,则对于求和计算,上方intra_bc_flag被视为零。如此 可以通过公式(condL&&availableL)+(condA&&availableA)来表示 上下文索引。
在读取上下文步骤1412中,在处理器205的执行下,从上下文存储器模 块1304中读取上下文,其中该上下文是利用上下文索引从确定上下文索引步 骤1410中所选择的。
然后,在对二进制数进行解码的步骤1414中,使用上下文来从编码位流 312中解码一个标志(或“二进制数”)。解码后的标志与针对当前编码单位(CU) 的intra_bc_flag相对应。
在存储在标志高速缓存器中的步骤1416中,将解码后的标志存储在存储 器206内所配置的标志高速缓存模块1308中,以供将来在从编码位流312解码 后续intra_bc_flag时进行参考。此外,在更新上下文的步骤1418中,在处理 器205的执行下,根据解码后的标志值来更新上下文。更新与该上下文相关 联的概率和可能二进制数值(即,“valMPS”)。
然后,在写入上下文的步骤1420中,使用与步骤1412相同的上下文索引 来将更新后的上下文写回至上下文存储器模块1304。在步骤1420之后,方法 1400结束。
如上所述,还可以利用视频编码器114来执行方法1400,其中修改步骤 1414以将二进制数(即,针对当前编码单位(CU)的intra_bc_flag值)编码在编码 位流312中。
在方法1400的一个替代配置中,修改上方intra_bc_flag可用测试步骤 1402,以使得在当前编码单位(CU)与当前编码树块(CTB)的顶部对准的情况 下,即使上方编码树块(CTB)中的邻接编码单位(CU)可用,上方intra_bc_flag 也被视为不可用。也就是说,在相对于当前编码树块(CTB)的左上方亮度样 本指定当前亮度编码块的左上方样本的编码单位(CU)Y坐标(即,yCb)为零 的情况下,“availableA”=假。在这样修改步骤1402的配置中,去除编码树块 (CTB)间的依赖性,这得到标志高速缓存器模块1308不必包括针对多达(512) 个intra_bc_flag的缓冲。在这样修改步骤1402的配置中,对于确定上下文索 引的步骤1410,编码单位(CU)1210依赖于块1214的intra_bc_flag值,而对于 确定上下文索引的步骤1410,编码单位(CU)1220依赖于块1222和1224的 intra_bc_flag值。
在方法1400的另一替代配置中,省略了上方intra_bc_flag可用测试步骤 1402和读取上方intra_bc_flag步骤1404(即,available A始终为假)。在省略了 步骤1402和1404的配置中,由于上下文索引是仅根据通过读取左方标志的步 骤1408所得到的左方intra_bc_flag值来设置的(或者在左方标志不可用的情况 下为零),因此确定上下文索引的步骤1410不重要。省略了步骤1402和1404 的配置针对intra_bc_flag仅需上下文存储器模块1304中的两个上下文。此外, 省略了步骤1402和1404的方法1400的配置不要求标志高速缓存模块1308中 的存储器针对上方邻居缓冲多达512个intra_bc_flag或者五十六(56)个intra_bc_flag。
在方法1400的又一替代配置中,省略了步骤1402~1408。在省略了步骤 1402~1408的配置中(即,availableA和availableL始终为假),由于对于 intra_bc_flag仅使用一个上下文,因此确定上下文索引的步骤1410不重要。 上下文存储器模块1304如此针对与该一个上下文相对应的句法元素仅包括 一个上下文。在省略了步骤1402~1408的配置中,由于无需参考来自邻接编 码单位(CU)的intra_bc_flag值来确定针对当前编码单位(CU)的intra_bc_flag的 上下文索引,因此可以省略标志高速缓存模块1308。
图15A是示出根据一个配置的用于确定针对编码单位(CU)的预测模式 的方法1500的示意流程图。方法1500由视频解码器134作为对编码单位(CU) 句法结构进行解析的一部分来进行。方法1500可被实现为实现视频解码器 134的软件代码模块中的一个或多个,其中这些软件代码模块驻留在硬盘驱 动器210中并且由处理器205控制其执行。
方法1500从对intra_bc_flag进行解码的步骤1502开始,其中在该步骤 1502中,根据方法1400来从编码位流312中解码帧内块复制标志。从编码位 流312中解码帧内块复制标志以用来确定针对编码单位(CU)的预测模式。
然后,在intra_bc_flag测试的步骤1504中,如果帧内块复制标志的值为1, 则已知编码单位(CU)的预测模式为“MODE_INTRABC”(即,针对编码单位 (CU)的预测模式是帧内块复制模式),并且控制进入确定样本值的步骤1510。 在确定样本值的步骤1510中,在处理器205的执行下,通过在帧内块复制模 块436中进行图11的帧内复制块的步骤1140来针对编码单位(CU)确定参考样 本值(或样本)的块。
如果帧内块复制标志的值为0,则控制进入对pred_mode_flag进行解码的 步骤1506。对pred_mode_flag进行解码的步骤1506通过进行图11的步骤1116 来从编码位流312中解码预测模式句法元素。
然后,在pred_mode_flag测试的步骤1508中,根据解码后的预测模式句 法元素来确定针对编码单位(CU)的预测模式。pred_mode_flag值为零(“0”)表 示“MODE_INTER”(即,针对编码单位(CU)的预测模式是帧间预测模式),并 且pred_mode_flag值为一(“1”)表示“MODE_INTRA”(即,针对编码单位(CU) 的预测模式是帧内预测模式)。
图15B是示出根据一个配置的用于确定针对编码单位(CU)的预测模式的 方法1520的示意流程图。方法1520由视频解码器134作为对编码单位(CU)句 法结构进行解析的一部分来进行。方法1520可被实现为实现视频解码器134 的软件代码模块中的一个或多个,其中这些软件代码模块驻留在硬盘驱动器 210中并且由处理器205控制其执行。
方法1520包括用于推导编码单位(CU)的预测模式的方法1100的步骤的 子集。
方法1520从对pred_mode_flag进行解码的步骤1522开始。在对 pred_mode_flag进行解码的步骤1522中,通过在处理器205的执行下进行方法 1100的步骤1116来从编码位流312中解码预测模式句法元素。如上所述,在 步骤1116中,熵解码器420用于从编码位流312中解码预测模式标志以用来确 定针对编码单位(CU)的预测模式。
然后,在pred_mode_flag测试的步骤1524中,根据解码后的预测模式句 法元素来确定针对编码单位(CU)的预测模式。pred_mode_flag值为零(“0”)表 示“MODE_INTER”(即,针对编码单位(CU)的预测模式是帧间预测模式),其 中在编码位流312中不存在intra_bc_flag,因而没有利用方法1520对 intra_bc_flag进行解码。如果pred_mode_flag值为一(“1”),则控制进入对 intra_bc_flag进行解码的步骤1526。
在对intra_bc_flag进行解码的步骤1526中,处理器205用于根据方法1400 来从编码位流312中解码帧内块复制标志。如上所述,帧内块复制标志用于 表示当前样本基于当前帧的先前解码的样本。如此,如果并且只有 pred_mode_flag的值为一(1),则对intra_bc_flag进行解码。如果帧内块复制标 志的值为一,则向编码单位(CU)的预测模式分配“MODE_INTRABC”(即,针 对编码单位(CU)的预测模式是帧内块复制模式)。否则,向编码单位(CU)的 预测模式分配“MODE_INTRA”(即,针对编码单位(CU)的预测模式是帧内预 测模式)。
然后,在intra_bc_flag测试的步骤1528中,如果帧内块复制标志的值为 一,则已知编码单位(CU)的预测模式为“MODE_INTRABC”,并且控制进入 确定样本值的步骤1530。否则,已知编码单位(CU)的预测模式为 “MODE_INTRA”。
在确定样本值的步骤1530中,在处理器205的执行下,通过在帧内块复 制模块436中进行图11的帧内块复制步骤1140来针对编码单位(CU)确定参考 样本值(或样本)的块。如上所述,通过根据先前解码的样本确定来自参考块 的样本值,基于解码后的帧内块复制标志来从编码位流312中解码参考样本 的块。
用信号向帧间预测通知“MODE_INTER”并且用信号向帧内预测通知 “MODE_INTRA”。用信号向帧内块复制模式通知“MODE_INTRABC”。这并 不意味着帧内块复制模式应具有与帧内预测相同的语义。还可以向帧内块复 制模式标记“MODE_INTERBC”。帧内块复制模式的语义与帧间预测和帧内 预测各自共享相似性,并且这里概括如下:
“块矢量”在以下方面与运动矢量相同:相对于当前块应用空间偏移以选 择参考块。
“块矢量”在以下方面与运动矢量不同:(由于参考当前帧)不存在时间偏 移,因此矢量不应被解释为参考从一些先前帧起发生了移动的同一“物体”的 一部分(通常这样解释运动矢量)。
与帧内预测方法的邻接样本相同,从当前帧获得帧内块复制编码单位的 参考样本(即,帧内预测)。
在启用约束帧内预测的情况下,帧内块复制块应参考帧间预测样本,这 是因为这种参考减少了约束帧内预测所提供的差错恢复特征。
帧内块复制块的残差信息更近似于运动补偿(帧间预测)块的残差信息, 因而通常优选使用离散余弦变换(DCT),而对于帧内预测,对于4×4变换块使 用离散正弦变换(DCT)。
通过上述语义,可以看出标记“MODE_INTRABC”在一定程度上是任意 的,并且不应被解释为表示帧内预测的语义均一地适用于帧内块复制模式。
方法1500和1520在用以针对帧内预测情况和帧间预测情况指定预测模 式的句法元素的配置方面有所不同。使用帧内预测的帧通常具有编码位流 312中所存在的大量残差信息。结果,用信号通知预测模式的开销与残差信 息的开销相比变小。作为对比,使用帧间预测的帧通常具有编码位流312中 所存在的少量残差信息。编码位流312中所存在的少量残差信息是由于运动 估计模块338利用非常密切地匹配帧数据310的空间偏移从一个或多个参考 帧中选择参考块的能力而产生的。如此,可以针对帧间预测的帧或编码单位 (CU)实现非常高的压缩效率。在这些情况下,用信号通知针对编码单位(CU) 的预测模式的开销成为针对编码位流312中的编码单位(CU)的数据的更有意 义部分。方法1520需要单个句法元素(即,“pred_mode_flag”)以用信号通知 “MODE_INTER”情况。作为对比,方法1500需要两个句法元素(即, “intra_bc_flag”及其之后的“pred_mode_flag”)以用信号通知“MODE_INTER” 情况。
在方法1500的步骤1502或方法1520的步骤1526中,可以应用修改了步骤 1402、省略了步骤1402和1404或者省略了步骤1402~1408的上述方法1400的 替代配置。在步骤1502或步骤1526中应用方法1400的替代配置的结构中,实 现了上下文存储器模块1304的存储器容量的减少。
对于修改了步骤1402或者省略了步骤1402和1404的方法1400的配置,实 现了标志高速缓存模块1308的存储器容量的减少。对于省略了步骤 1402~1408的方法1400的配置,在视频解码器134内的熵解码器420和视频编 码器114内的熵编码器324中不存在标志高速缓存模块1308。
图16是示出编码树块(CTB)内的编码单位(CU)中的残差四叉树(RQT) 1600的示意框图。在图16的示例中,32×32编码单位(CU)包含残差四叉树 (RQT)1600。将残差四叉树(RQT)1600子分割成四个区域。左下方区域包括 16×16变换1602。右下方区域被单独子分割成另外四个区域,其中在这四个 区域中,右上方区域包括8×8变换1604。在残差四叉树(RQT)的任何“叶节 点”(即,没有进一步子分割的任何区域)处均可能存在变换。使用“编码块标 志”来用信号通知在如残差四叉树(RQT)的叶节点那样的点处存在变换。
视频编码器114和视频解码器134支持离散正弦变换(DST)和离散余弦变 换(DCT)这两种变换。视频编码器114和视频解码器134通常支持仅一个大小 的离散正弦变换(DST)(即,4×4离散正弦变换(DST))。视频编码器114和视频 解码器134通常支持诸如4×4、8×8、16×16和32×32离散余弦变换(DCT)等的 多个大小的离散余弦变换(DCT)。对于包括帧间预测的预测单位(PU)的编码 单位(CU)的残差四叉树(RQT)中的变换单位(TU),将离散余弦变换(DCT)用 于所有的变换。对于包括帧内预测的预测单位(PU)的编码单位(CU)的残差四 叉树(RQT)中的4×4个变换单位(TU),在亮度通道和色度通道中使用4×4变换。 对于包括帧内预测的预测单位(PU)的编码单位(CU)的残差四叉树(RQT)中的 8×8个变换单位(TU),可以在色度通道中使用4×4变换。在这些情况下,4×4 变换是离散正弦变换(DST)。对于所有的其它块大小、并且对于包括帧间预 测的预测单位(PU)的编码单位中的变换单位(TU),使用离散余弦变换(DCT)。
在残差信息的量大(即,空间域表示)、特别是边界(例如,变换单位(TU) 边界和预测单位(PU)边界)处的边缘不连续的情形中,离散正弦变换(DST)良 好地工作(即,提供紧凑的频域表示)。残差信息的量大的情形对于帧内预测 的预测单位(PU)而言很常见。
离散余弦变换(DCT)在“更为平滑的”空间残差数据(即,在空间域中在大 小方面的步长间断较少的残差数据)的情况下更好地工作,这样得到更为紧 凑的频域表示。这种更为平滑的空间残差数据是典型的帧间预测的预测单位 (PU)。
残差四叉树具有最大“深度”。最大深度指定编码单位(CU)内可能的四叉 树子分割的最大数量。通常,子分割的最大数量局限于三(“3”)个层级等级, 但子分割的其它最大数量也是可以的。针对最小变换大小的限制可以防止残 差四叉树的子分割的层级等级的数量达到最大数量。例如,最小变换大小为 4×4的16×16编码单位(CU)仅可以进行两次子分割(即,两个层级等级),而指 定了最大值为3(即,在高等级句法中)。针对帧间预测的编码单位(CU)内和 帧内预测的编码单位(CU)内的残差四叉树,单独地指定最大深度。对于帧间 预测的编码单位(CU),在高等级句法中(例如,在序列参数集中)存在 “max_transform_hierarchy_depth_inter”句法元素以定义最大深度。
对于帧内预测的编码单位(CU),在高等级句法中(例如,在序列参数集 中)存在“max_transform_hierarchy_depth_intra”句法元素以定义最大深度。在 使用“PART_N×N”分区模式的情况下,帧内预测的编码单位(CU)的最大深度 可以增加1。对于使用帧内块复制模式的编码单位(CU),认为分区模式是 “PART_2N×2N”(即,一个预测单位(PU)占据整个编码单位(CU))。
方法1520可被配置为在intra_bc_flag测试的步骤1528表示使用帧内块复 制(即,“MODE_INTRABC”)的情况下,为了变换选择的目的而将分区模式 视为“MODE_INTER”。在将分区模式视为“MODE_INTER”的方法1520的配 置中,利用max_transform_hierarchy_depth_inter来指定针对编码单位(CU)的 残差四叉树(RQT)的最大深度。此外,在将分区模式视为“MODE_INTER”的 方法1520的配置中,将离散余弦变换(DCT)用于针对帧内块复制模式所配置 的编码单位(CU)的残差四叉树(RQT)中的所有变换大小。
图17A是示出用于生成针对被配置为使用帧内块复制模式的编码单位 (CU)的参考样本块的方法1700的示意流程图。根据方法1700,与高效率视频 编码(HEVC)的“约束帧内预测”特征相结合地产生参考块内的样本。视频编码 器114和视频解码器134在生成被配置为使用帧内块复制模式的编码单位(CU) 的参考块时进行方法1700。方法1700可被实现为实现视频编码器114和视频 解码器134的软件代码模块中的一个或多个,其中这些软件代码模块驻留在 硬盘驱动器210中并且由处理器205控制其执行。
向方法1700的输入包括环路滤波之前的块矢量以及当前编码树块(CTB) 和先前编码树块(CTB)的样本。方法1700从约束帧内预测测试的步骤1702开 始,其中在该步骤1702中,处理器205用于(例如,通过测试诸如“图片参数集” 等的高等级句法中的“constrained_intra_pred_flag”句法元素的值)测试约束帧 内预测模式是否启用。如果约束帧内预测模式启用,则控制进入样本预测模 式测试的步骤1704。否则,约束帧内预测模式禁用,并且控制进入参考样本 复制的步骤1708。
然后,在样本预测模式测试的步骤1704中,处理器205用于测试利用块 矢量相对于当前编码单位(CU)内的样本位置所参考的当前或先前编码树块 (CTB)内的样本的预测模式。该样本位置是通过将块矢量与编码单位(CU)内 的相应样本的位置进行矢量相加所获得的。如果预测模式是 “MODE_INTRA”或“MODE_INTRABC”,则控制进入参考样本复制步骤1708。否则(即,预测模式是“MODE_INTER”),控制进入分配默认值的步骤 1706。
在分配默认值的步骤1706中,在处理器205的执行下,向参考块内的样 本分配默认值。例如,可以使用邻接样本被标记为不可用于参考的情况下的 帧内预测所使用的默认值来向参考块内的样本分配默认值。
在参考样本复制的步骤1708中,在处理器205的执行下,将来自当前帧 的样本复制到参考块(即,进行参考样本复制)。例如,可以将位于当前或先 前编码树块(CTB)内的样本复制到参考块。通过当前编码单位(CU)内的样本 位置与所提供的块矢量的矢量相加来确定要复制的样本的位置。
可以针对参考块的所有样本进行方法1700的所有步骤(即,迭代遍历参 考样本的二维阵列)。此外,可以针对参考块进行一次步骤1702,并且可以 针对参考块的所有样本进行步骤1704~1708,其中步骤1704或1708是根据步 骤1702的结果而针对各样本所调用的。
图17B是示出用于生成针对被配置为使用帧内块复制模式的编码单位 (CU)的参考样本块的方法1720的示意流程图。根据方法1720,与高效率视频 编码(HEVC)的“约束帧内预测”特征相结合地产生参考块内的样本。
视频编码器114和视频解码器134在生成被配置为使用帧内块复制模式 的编码单位(CU)的参考块时进行方法1700。再次地,方法1700可被实现为实 现视频编码器114和视频解码器134的软件代码模块中的一个或多个,其中这 些软件代码模块驻留在硬盘驱动器210中并且由处理器205控制其执行。
向方法1700的输入包括环路滤波之前的块矢量以及当前编码树块(CTB) 和先前编码树块(CTB)的样本。方法1720在功能上与图17A的方法1700等同。 不同之处在于即使在约束帧内预测启用的情况下,方法1720也可以访问来自 帧间预测的编码单位(CU)的样本。
方法1720从参考样本块复制的步骤1722开始。在参考样本块复制的步骤 1722中,在处理器205的执行下,利用参考样本(例如,846)填充整个编码单 位(CU)(例如,842)(即,进行参考样本块复制)。参考样本(例如,846)可以 包括来自帧内预测的编码单位(CU)和帧间预测的编码单位(CU)(例如,848) 这两者的样本。
然后,在约束帧内预测测试的步骤1724中,处理器205用于根据图17A 的步骤1702来测试约束帧内预测是否启用。如果约束帧内预测禁用,则方法 1720终止。否则,控制进入约束重叠测试的步骤1726。
在约束重叠测试的步骤1726中,如果参考块的任何样本与帧间预测的编 码单位(CU)重叠,则方法1720终止。否则,方法1720进入覆盖部分的步骤 1728,其中在该步骤1728中,利用诸如在将参考帧标记为不可用于帧内预测 的情况下的帧内预测的参考样本所使用的默认值等的默认值来替换复制样 本。可以通过迭代遍历编码单位中的各样本并且单独测试各样本来实现步骤 1726和1728。
图17C是示出用于生成针对被配置为使用帧内块复制模式的编码单位 (CU)的参考样本块的方法1740的示意流程图。方法1740可被实现为实现视频 编码器114和视频解码器134的软件代码模块中的一个或多个,其中这些软件 代码模块驻留在硬盘驱动器210中并且由处理器205控制其执行。在生成被配 置为使用帧内块复制模式的编码单位(CU)的参考块的情况下,进行方法 1740。视频编码器114和视频解码器134的配置在处理诸如图8A所示等的包含 来自不同条带或区块的编码树块(CTB)的帧部分的情况下,可以应用方法1740。将方法1740(例如,通过使用嵌套环路迭代遍历所有的位置)应用于编 码单位(CU)中的各位置。
将参考视频编码器114来以示例方式说明方法1740。
方法1740从同一条带和区块测试的步骤1742开始。
在同一条带和区块测试的步骤1742中,处理器205用于测试当前编码树 块(CTB)和先前编码树块(CTB)的条带以及当前编码树块(CTB)和先前编码 树块(CTB)的区块。如果两个编码树块(CTB)属于同一条带和同一区块,则控 制进入参考样本复制的步骤1746。否则,控制进入分配默认样本值的步骤 1744。
在分配默认样本值的步骤1744中,视频编码器114中的帧内块复制模块 350将默认样本值分配至参考样本块中的样本值。可选地,在利用视频解码 器134正进行方法1740的情况下,视频解码器134中的帧内块复制模块436进 行步骤1744。
在参考样本复制的步骤1746中,视频编码器114中的帧内块复制模块350 将来自诸如帧部分800等的帧部分的参考样本复制到参考样本块。可选地, 在利用视频解码器134正进行方法1740的情况下,视频解码器134中的帧内块 复制模块436进行步骤1746。
然后,方法1740终止。
图17D是示出用于生成针对被配置为使用帧内块复制模式的编码单位 (CU)的参考样本块的方法1760的示意流程图。方法1760可被实现为实现视频 编码器114和视频解码器134的软件代码模块中的一个或多个,其中这些软件 代码模块驻留在硬盘驱动器210中并且由处理器205控制其执行。在生成被配 置为使用帧内块复制模式的编码单位(CU)的参考块的情况下,进行方法 1760。视频编码器114和视频解码器134在处理诸如图8A所示等的包含来自不 同的条带或区块的编码树块(CTB)的帧部分的情况下,可以应用方法1760。 将通过参考视频编码器114来举例说明方法1760。方法1760从参考样本块复 制的步骤1762开始。
在参考样本块复制的步骤1762中,视频编码器114中的帧内块复制模块 350将来自诸如帧部分800等的帧部分的参考样本的块复制到参考样本块。所 复制的参考样本的块可以包括来自属于不同的条带或区块的编码树块(CTB) 的参考样本。可选地,在利用视频解码器134正进行方法1760的情况下,视 频解码器134中的帧内块复制模块436进行步骤1762。
在同一条带和区块测试的步骤1764中,处理器205测试当前编码树块 (CTB)和先前编码树块(CTB)的条带以及当前编码树块(CTB)和先前编码树 块(CTB)的区块。如果这两个编码树块(CTB)属于同一条带和同一区块,则方 法1760终止。否则,控制进入利用默认样本值替换复制样本的步骤1766。
在利用默认样本值替换复制样本的步骤1766中,视频编码器114中的帧 内块复制模块350将默认样本值分配至与先前编码树块(CTB)相对应的参考 样本块(即,图8A中的810)中的位置。可选地,在利用视频解码器134正进行 方法1760的情况下,视频解码器134中的帧内块复制模块436进行步骤1766。
然后,方法1760终止。
图18A是示出参考如下的参考块1806的示例块矢量1804的示意框图,其 中在该参考块1806中,块矢量1804的原点与除当前编码单位1802(CU)位置 以外的点有关。如图18A所示,可以通过块矢量与当前编码树块(CTB)的左 上角的位置的矢量相加来确定参考块1806的位置。在将帧部分1800(即,环 路滤波之前的当前编码树块(CTB)和先前编码树块(CTB))保持在本地存储器 中(例如,保持在存储器206内)的配置中,不需要矢量相加并且块矢量1804 直接指定本地存储器中的参考块1806的位置。图18A的示例与块矢量同当前编码单位(CU)位置有关的图8A~8C相反。
对于源自于当前编码单位的左上角的块矢量,块矢量的垂直位移局限于[0..56]。通过从编码树块(CTB)的高度(即,六十四(64))中减去最小编码单位 (SCU)的高度(即,八(8))来推导最大值五十六(56)。如此,无需将针对垂直位 移的“符号”位编码在mvd_coding句法结构中。
块矢量的水平位移局限于[-64..56]。对于水平位移,与相对于当前编码 单位(CU)位置的块矢量相比,预期正值和负值的更均匀分布。如此,可以通 过将旁路编码二进制数用于mvd_coding句法结构中的针对水平位移的“符 号”位来预期更高的编码效率。
图18B是示出被配置为使用帧内块复制模式的连续编码单位(CU)之间的 示例块矢量表示的示意框图。在图18B的示例中,帧部分1820包括两个编码 树块(CTB)。如从图18B看出,先前编码单位(CU)1822被配置为使用帧内块 复制模式,其中块矢量1834被配置为选择参考块1836。当前编码单位(CU) 1822也被配置为使用帧内块复制模式,其中块矢量1830用于选择参考块 1832。编码单位(CU)的排序符合如参考图6A所述的“Z扫描”顺序。在图18B的示例中,考虑到编码单位(CU)1822和编码单位(CU)1828的位置上的差异, 块矢量差1838表示块矢量1836和块矢量1832之间的差。代替块矢量1830,使 用“mvd_coding”句法结构,针对编码单位(CU)1828的编码单位(CU)句法结构 将块矢量差1838编码在编码位流312中。
在一个配置中,视频编码器114可以如上所述计算块矢量差1838并且将 所计算出的块矢量差1838编码到编码位流114中。在一个配置中,视频解码 器134可以从编码位流312中解码块矢量差1838并且将该块矢量差1838与块 矢量1834相加以确定块矢量1830。由于利用空间邻接的帧内块复制编码单位 (CU)的块矢量之间的相关性以提高将块矢量编码在编码位流312中的效率, 因此视频编码器114和视频解码器134的这些配置实现了更高的编码效率。这 些配置还要求存储计算当前块矢量(例如,1830)所用的一个先前块矢量(例如,1834)。先前块矢量可被视为针对当前块矢量的“预测值”(即,初始值)。 在先前编码单位(CU)没有被配置为使用帧内块复制模式的情况下,配置可以 将所存储的块矢量重置为(0,0)。视频编码器将所计算出的块矢量差1838编码 到编码位流114中并且视频解码器134将块矢量差1838与块矢量1834相加的 配置防止了来自不太可能与当前编码单位(CU)的块矢量具有任何相关性的 较早编码单位(CU)的块矢量对当前编码单位(CU)的块矢量的计算产生影响。
在一个配置中,还可以使用与当前编码单位(CU)的左方和/或上方邻接 的编码单位(CU)的块矢量。在这种配置中,需要针对块矢量的附加存储器, 这包括针对沿着编码树块(CTB)的顶部的编码单位(CU)的“上方”块矢量的 “线缓冲器”,从而保持来自编码树块(CTB)的先前行的块矢量。此外,可以 使用任意的可用块矢量来提供针对当前编码单位(CU)的块矢量的预测值。被 配置为使用帧内块复制模式的邻接编码单位(CU)被视为“可用于”块矢量预 测。没有被配置为使用帧内块复制模式的邻接编码单位(CU)被视为“不可用于”块矢量预测。在“左方”块矢量和“上方”块矢量这两者都可用的情况下,可 以使用这两个块矢量的平均值作为预测值。可选地,可以将标志编码在编码 位流312中以指定使用哪个块矢量。例如,如果标志为零,则可以使用左方 块矢量作为预测值,并且如果标志为1,则可以使用上方块矢量作为预测值。
这里所述的配置示出例如通过减少对句法元素进行编码所需的上下文 的数量来降低复杂度的方法。所述的配置例如通过对句法元素进行排序以使 得按照向着整个帧类型而优化的方式(例如,帧间预测vs帧内预测)以及利用 块矢量编码方法来在编码位流312中指定预测模式或编码单位(CU)模式,来 提高编码效率。此外,这里所述的配置通过在包括条带边界、区块边界、约 束帧内预测的情形中指定帧内块复制模式行为来提供差错恢复。
产业上的可利用性
所述的配置适用于计算机和数据处理行业,特别适用于对诸如视频信号 等的信号进行编码或解码的数字信号处理。
前述仅说明本发明的一些实施例,并且可以在没有背离本发明的范围和 精神的情况下对本发明进行修改和/或改变,其中这些实施例仅是示例性而非 限制性的。
在本说明书的上下文中,词语“包括”意味着“主要但未必仅包括”或“具 有”或“包含”,而不是“仅由…组成”。词语“包括(comprising)”的诸如 “comprise”和“comprises”等的词尾变化具有相应的变化含义。
附录A
以下文本是编码单位(CU)句法结构。
7.3.8.5编码单位句法
7.4.9.5编码单位语义
pred_mode_flag等于0指定了以帧间预测模式对当前编码单位进行编 码。pred_mode_flag等于1指定了以帧内预测模式对当前编码单位进行编码。 如下所述,针对x=x0..x0+nCbS-1和y=y0..y0+nCbS-1推导变量 CuPredMode[x][y]:
–如果pred_mode_flag等于0,则将CuPredMode[x][y]设置得等于 MODE_INTER。
–否则(pred_mode_flag等于1),如果intra_bc_flag等于0,则将 CuPredMode[x][y]设置得等于MODE_INTRA。
–否则(pred_mode_flag等于1并且intra_bc_flag等于1),则将 CuPredMode[x][y]设置得等于MODE_INTRABC。
在不存在pred_mode_flag的情况下,如下所述,针对x=x0..x0+nCbS-1 和y=y0..y0+nCbS-1推导变量CuPredMode[x][y]:
–如果slice_type等于I,则推断出CuPredMode[x][y]等于 MODE_INTRA。
–否则(slice_type等于P或B),在cu_skip_flag[x0][y0]等于1的情况下, 推断出CuPredMode[x][y]等于MODE_SKIP。
7.4.9.9运动矢量差语义
变量BvIntra[x0][y0][compIdx]指定了帧内块复制预测模式所使用的 矢量。BvIntra[x0][y0]的值应在-128~128(包括端点)的范围内。阵列索引x0, y0指定了所考虑的预测块的左上方亮度样本相对于图片的左上方亮度样本 的位置(x0,y0)。向水平块矢量成分分配compIdx=0并且向垂直块矢量成分 分配compIdx=1。
结束附录A
附录B
附录B示出视频编码器114和视频解码器134针对符合图8C的配置的一致 性约束。
如下是位流一致性的要求:在constrained_intra_pred_flag等于1的情况下, 应约束BvIntra[x0][y0]的值,使得将各参考样本位置(xRefCmp,yRefCmp) 处的各样本标记为“可用于帧内预测”。
结束附录B
附录C
附录B示出视频编码器114和视频解码器134针对符合图8C的配置的一致 性约束。
8.4.4.2.7帧内块复制预测模式的规格
如下所述推导变量bitDepth:
–如果cIdx等于0,则将bitDepth设置得等于BitDepthY
–否则,将bitDepth设置得等于BitDepthC
……
如下所述推导预测样本的(nTbS)×(nTbS)阵列,其中x,y=0..nTbS–1:
–通过以下表达式指定参考样本位置(xRefCmp,yRefCmp):
(xRefCmp,yRefCmp)=(xTbCmp+x+bv[0],yTbCmp+y+bv[1]) …(8-65)
–将被标记为“可用于帧内预测”的位置(xRefCmp,yRefCmp)处的各样 本分配至predSamples[x][y]。
–在被标记为“不可用于帧内预测”的位置(xRefCmp,yRefCmp)处的各 样本中,将值1<<(bitDepth-1)分配至predSamples[x][y]。
结束附录C
附录D
9.3.2.2针对上下文变量的初始化处理
表9-4–针对初始化处理中的各初始化类型(initializationType)的ctxIdx 和句法元素之间的关联
表9-33–针对intra_bc_flag的ctxIdx的initValue的值
9.3.4.2.2使用左方句法元素和上方句法元素的ctxInc的推导处理
表9-40–使用左方句法元素和上方句法元素的ctxInc的规格
结束附录D。

Claims (24)

1.一种用于确定将视频数据编码到视频位流中所用的残差值的方法,所述方法的特征在于包括以下步骤:
接收所述视频数据的约束帧内块复制预测编码单位的多个块矢量;
获得针对所接收到的多个块矢量所参考的各编码单位的预测模式;
选择所接收到的多个块矢量所参考的编码单位中的一个编码单位,所选择的编码单位的所获得的预测模式是帧内预测模式或帧内块复制预测模式,其中所选择的编码单位和所述约束帧内块复制预测编码单位属于同一条带和同一区块;以及
根据所选择的编码单位的参考样本来确定将所述约束帧内块复制预测编码单位编码到所述视频位流中所用的残差值。
2.根据权利要求1所述的方法,其中,在所选择的编码单位的所获得的预测模式是帧间预测的情况下,向所选择的编码单位的参考样本分配默认值。
3.根据权利要求1所述的方法,其中,将所获得的预测模式是帧间预测的编码单位标记为不可用。
4.根据权利要求1所述的方法,其中,在根据所述视频数据的先前视频帧中的块来预测所述视频数据的当前视频帧内的块的内容的情况下,将编码单位标记为不可用。
5.根据权利要求1所述的方法,其中,使用所述多个块矢量中的参考位于多个编码单位内的区域的块矢量来确定将所述约束帧内块复制预测编码单位编码到所述视频位流中所用的残差值。
6.一种用于确定将视频数据编码到视频位流中所用的残差值的系统,所述系统包括:
存储器,用于存储数据和计算机程序;
处理器,其连接至所述存储器,
其特征在于,所述计算机程序包括用于进行以下操作的指令:
接收所述视频数据的约束帧内块复制预测编码单位的多个块矢量;
获得针对所接收到的多个块矢量所参考的各编码单位的预测模式;
选择所接收到的多个块矢量所参考的编码单位中的一个编码单位,所选择的编码单位的所获得的预测模式是帧内预测模式或帧内块复制预测模式,其中所选择的编码单位和所述约束帧内块复制预测编码单位属于同一条带和同一区块;以及
根据所选择的编码单位的参考样本来确定将所述约束帧内块复制预测编码单位编码到所述视频位流中所用的残差值。
7.根据权利要求6所述的系统,其中,在所选择的编码单位的所获得的预测模式是帧间预测的情况下,向所选择的编码单位的参考样本分配默认值。
8.根据权利要求6所述的系统,其中,将所获得的预测模式是帧间预测的编码单位标记为不可用。
9.根据权利要求6所述的系统,其中,在根据所述视频数据的先前视频帧中的块来预测所述视频数据的当前视频帧内的块的内容的情况下,将编码单位标记为不可用。
10.根据权利要求6所述的系统,其中,使用所述多个块矢量中的参考位于多个编码单位内的区域的块矢量来确定将所述约束帧内块复制预测编码单位编码到所述视频位流中所用的残差值。
11.一种用于确定将视频数据编码到视频位流中所用的残差值的设备,所述设备的特征在于包括:
用于接收所述视频数据的约束帧内块复制预测编码单位的多个块矢量的部件;
用于获得针对所接收到的多个块矢量所参考的各编码单位的预测模式的部件;
用于选择所接收到的多个块矢量所参考的编码单位中的一个编码单位的部件,所选择的编码单位的所获得的预测模式是帧内预测模式或帧内块复制预测模式,其中所选择的编码单位和所述约束帧内块复制预测编码单位属于同一条带和同一区块;以及
用于根据所选择的编码单位的参考样本来确定将所述约束帧内块复制预测编码单位编码到所述视频位流中所用的残差值的部件。
12.根据权利要求11所述的设备,其中,在所选择的编码单位的所获得的预测模式是帧间预测的情况下,向所选择的编码单位的参考样本分配默认值。
13.根据权利要求11所述的设备,其中,将所获得的预测模式是帧间预测的编码单位标记为不可用。
14.根据权利要求11所述的设备,其中,在根据所述视频数据的先前视频帧中的块来预测所述视频数据的当前视频帧内的块的内容的情况下,将编码单位标记为不可用。
15.根据权利要求11所述的设备,其中,使用所述多个块矢量中的参考位于多个编码单位内的区域的块矢量来确定将所述约束帧内块复制预测编码单位编码到所述视频位流中所用的残差值。
16.一种用于从视频位流对残差值进行解码的方法,所述方法的特征在于包括以下步骤:
接收包含至少一个约束帧内块复制预测编码单位的所述视频位流,所述至少一个约束帧内块复制预测编码单位具有块矢量;
使用所述块矢量来选择一个编码单位,所选择的编码单位的预测模式是帧内预测模式或帧内块复制预测模式,其中所选择的编码单位和所述约束帧内块复制预测编码单位属于同一条带和同一区块;以及
根据所选择的编码单位的参考样本来确定所述约束帧内块复制预测编码单位所用的残差值。
17.根据权利要求16所述的方法,其中,块矢量参考位于所述视频位流中所包含的多个编码单位内的区域。
18.根据权利要求16所述的方法,其中,在根据视频数据的先前视频帧中的块来预测所述视频数据的当前视频帧内的块的内容的情况下,将编码单位标记为不可用。
19.一种用于从视频位流对残差值进行解码的系统,所述系统包括:
存储器,用于存储数据和计算机程序;
处理器,其连接至所述存储器,
其特征在于,所述计算机程序包括用于进行以下操作的指令:
接收包含具有块矢量的至少一个约束帧内块复制预测编码单位的所述视频位流;
使用所述块矢量来选择一个编码单位,所选择的编码单位的预测模式是帧内预测模式或帧内块复制预测模式,其中所选择的编码单位和所述约束帧内块复制预测编码单位属于同一条带和同一区块;以及
根据所选择的编码单位的参考样本来确定所述约束帧内块复制预测编码单位所用的残差值。
20.根据权利要求19所述的系统,其中,块矢量参考位于所述视频位流中所包含的多个编码单位内的区域。
21.根据权利要求19所述的系统,其中,在根据视频数据的先前视频帧中的块来预测所述视频数据的当前视频帧内的块的内容的情况下,将编码单位标记为不可用。
22.一种用于从视频位流对残差值进行解码的设备,所述设备的特征在于包括:
用于接收包含至少一个约束帧内块复制预测编码单位的所述视频位流的部件,所述至少一个约束帧内块复制预测编码单位具有块矢量;
用于使用所述块矢量来选择一个编码单位的部件,所选择的编码单位的预测模式是帧内预测模式或帧内块复制预测模式,其中所选择的编码单位和所述约束帧内块复制预测编码单位属于同一条带和同一区块;以及
用于根据所选择的编码单位的参考样本来确定所述约束帧内块复制预测编码单位所用的残差值的部件。
23.根据权利要求22所述的设备,其中,块矢量参考位于所述视频位流中所包含的多个编码单位内的区域。
24.根据权利要求22所述的设备,其中,在根据视频数据的先前视频帧中的块来预测所述视频数据的当前视频帧内的块的内容的情况下,将编码单位标记为不可用。
CN201480050631.2A 2013-09-13 2014-09-12 用于对视频数据进行编码和解码的方法、设备和系统 Active CN105532000B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AU2013228045A AU2013228045A1 (en) 2013-09-13 2013-09-13 Method, apparatus and system for encoding and decoding video data
AU2013228045 2013-09-13
PCT/AU2014/000893 WO2015035449A1 (en) 2013-09-13 2014-09-12 Method, apparatus and system for encoding and decoding video data

Publications (2)

Publication Number Publication Date
CN105532000A CN105532000A (zh) 2016-04-27
CN105532000B true CN105532000B (zh) 2019-03-01

Family

ID=52664825

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480050631.2A Active CN105532000B (zh) 2013-09-13 2014-09-12 用于对视频数据进行编码和解码的方法、设备和系统

Country Status (8)

Country Link
US (1) US20160227244A1 (zh)
EP (1) EP3044959A4 (zh)
JP (1) JP2016534660A (zh)
KR (2) KR20180010336A (zh)
CN (1) CN105532000B (zh)
AU (2) AU2013228045A1 (zh)
RU (1) RU2016113843A (zh)
WO (1) WO2015035449A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11570447B2 (en) 2018-12-28 2023-01-31 Hangzhou Hikvision Digital Technology Co., Ltd. Video coding and video decoding

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2013403224B2 (en) 2013-10-14 2018-10-18 Microsoft Technology Licensing, Llc Features of intra block copy prediction mode for video and image coding and decoding
EP3058736B1 (en) 2013-10-14 2019-02-27 Microsoft Technology Licensing, LLC Encoder-side options for intra block copy prediction mode for video and image coding
JP6336058B2 (ja) 2013-10-14 2018-06-06 マイクロソフト テクノロジー ライセンシング,エルエルシー ビデオ及び画像符号化及び復号のためのベースカラーインデックスマップモードの機能
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
KR102258427B1 (ko) 2014-01-03 2021-06-01 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩/디코딩에서의 블록 벡터 예측
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
US10368091B2 (en) 2014-03-04 2019-07-30 Microsoft Technology Licensing, Llc Block flipping and skip mode in intra block copy prediction
AU2014202921B2 (en) * 2014-05-29 2017-02-02 Canon Kabushiki Kaisha Method, apparatus and system for de-blocking a block of video samples
EP4354856A2 (en) 2014-06-19 2024-04-17 Microsoft Technology Licensing, LLC Unified intra block copy and inter prediction modes
US9948949B2 (en) * 2014-06-20 2018-04-17 Qualcomm Incorporated Intra block copy block vector signaling for video coding
EP3160144B1 (en) * 2014-06-20 2022-02-02 Sony Group Corporation Image encoding apparatus and method
US10856009B2 (en) * 2014-09-04 2020-12-01 Mediatek Inc. Method of block vector clipping and coding for screen content coding and video coding
RU2679201C2 (ru) 2014-09-30 2019-02-06 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Правила для режимов внутрикадрового прогнозирования, когда активируется волновая параллельная обработка данных
US10602158B2 (en) * 2015-02-11 2020-03-24 Ati Technologies Ulc Method for maximizing video slice size constraint
KR102272971B1 (ko) * 2015-04-13 2021-07-05 미디어텍 인크. 비디오 코딩에서 최악의 경우의 대역폭을 줄이기 위한 제약된 인트라 블록 카피 방법
US10540818B2 (en) 2015-04-15 2020-01-21 Google Llc Stereo image generation and interactive playback
US10412373B2 (en) 2015-04-15 2019-09-10 Google Llc Image capture for virtual reality displays
US10469873B2 (en) * 2015-04-15 2019-11-05 Google Llc Encoding and decoding virtual reality video
US10440407B2 (en) 2017-05-09 2019-10-08 Google Llc Adaptive control for immersive experience delivery
US10567464B2 (en) 2015-04-15 2020-02-18 Google Llc Video compression with adaptive view-dependent lighting removal
US10546424B2 (en) 2015-04-15 2020-01-28 Google Llc Layered content delivery for virtual and augmented reality experiences
US10419737B2 (en) 2015-04-15 2019-09-17 Google Llc Data structures and delivery methods for expediting virtual reality playback
US10444931B2 (en) 2017-05-09 2019-10-15 Google Llc Vantage generation and interactive playback
CN107615763B (zh) * 2015-05-28 2020-09-11 寰发股份有限公司 一种管理解码图像缓存器的方法及装置
US10356438B2 (en) * 2015-06-03 2019-07-16 Mediatek Inc. Method and apparatus of error handling for video coding using intra block copy mode
GB2539212A (en) * 2015-06-08 2016-12-14 Canon Kk Handling of non-correct block vectors generated for intra block copy coding mode
TWI750637B (zh) * 2015-06-08 2021-12-21 美商Vid衡器股份有限公司 螢幕內容編碼區塊內複製模式
EP3308540B1 (en) 2015-06-09 2020-04-15 Microsoft Technology Licensing, LLC Robust encoding/decoding of escape-coded pixels in palette mode
CN107852490B (zh) * 2015-07-27 2021-01-26 联发科技股份有限公司 一种视频编解码方法及系统
CN116016941A (zh) * 2015-09-08 2023-04-25 寰发股份有限公司 管理已解码图像缓存器的方法及视频编码器或视频解码器
JP6528635B2 (ja) * 2015-10-05 2019-06-12 富士通株式会社 動画像符号化装置、動画像符号化方法及び動画像符号化用コンピュータプログラム
KR102206503B1 (ko) * 2015-10-19 2021-01-22 미디어텍 인크. 인트라 블록 복사를 사용하는 비디오 코딩 시스템에서의 디코딩된 픽처 버퍼 관리를 위한 방법 및 장치
US10542258B2 (en) * 2016-01-25 2020-01-21 Google Llc Tile copying for video compression
CN109076210B (zh) * 2016-05-28 2021-04-09 联发科技股份有限公司 视频编解码方法和装置
KR102421721B1 (ko) * 2016-10-10 2022-07-15 삼성전자주식회사 블록 맵을 이용하여 영상을 부호화 또는 복호화하는 방법 및 장치
EP3531700B1 (en) * 2016-10-18 2022-04-06 Panasonic Intellectual Property Management Co., Ltd. Image coding method, transmission method and image coding device
CN116170585A (zh) * 2017-01-16 2023-05-26 世宗大学校产学协力团 影像编码/解码方法
US10474227B2 (en) 2017-05-09 2019-11-12 Google Llc Generation of virtual reality with 6 degrees of freedom from limited viewer data
WO2019007490A1 (en) * 2017-07-04 2019-01-10 Huawei Technologies Co., Ltd. DECODER INTEGRATED MODE (DIMD) INTEGRATED DEVICE TOOL CALCULATION COMPLEXITY REDUCTION
WO2019047763A1 (en) * 2017-09-08 2019-03-14 Mediatek Inc. METHODS AND APPARATUSES FOR PROCESSING IMAGES IN AN IMAGE OR VIDEO ENCODING SYSTEM
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
WO2019234598A1 (en) 2018-06-05 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Interaction between ibc and stmvp
GB2589223B (en) 2018-06-21 2023-01-25 Beijing Bytedance Network Tech Co Ltd Component-dependent sub-block dividing
WO2019244117A1 (en) 2018-06-21 2019-12-26 Beijing Bytedance Network Technology Co., Ltd. Unified constrains for the merge affine mode and the non-merge affine mode
US10848782B2 (en) 2018-09-21 2020-11-24 Tencent America LLC Method and apparatus for video coding
US11172236B2 (en) 2018-09-21 2021-11-09 Tencent America LLC Method and apparatus for video decoding that defines a search range for a reference block indicated by a block vector
CN110944196B (zh) 2018-09-24 2023-05-30 北京字节跳动网络技术有限公司 简化的基于历史的运动矢量预测
US11317099B2 (en) * 2018-10-05 2022-04-26 Tencent America LLC Method and apparatus for signaling an offset in video coding for intra block copy and/or inter prediction
CN112913249B (zh) 2018-10-22 2022-11-08 北京字节跳动网络技术有限公司 广义双向预测索引的简化编解码
CN112970262B (zh) 2018-11-10 2024-02-20 北京字节跳动网络技术有限公司 三角预测模式中的取整
US11310515B2 (en) 2018-11-14 2022-04-19 Tencent America LLC Methods and apparatus for improvement for intra-inter prediction mode
CN113170193A (zh) * 2018-11-28 2021-07-23 北京字节跳动网络技术有限公司 帧内块复制模式中块矢量列表的独立构造方法
EP3871410A4 (en) * 2018-11-29 2021-12-22 Beijing Bytedance Network Technology Co., Ltd. INTERACTION BETWEEN AN INTRABLOCK COPY MODE AND INTERPRETATION TOOLS
KR102572355B1 (ko) * 2018-11-30 2023-08-30 텐센트 아메리카 엘엘씨 비디오 코딩을 위한 방법 및 장치
WO2020125798A1 (en) * 2018-12-22 2020-06-25 Beijing Bytedance Network Technology Co., Ltd. Intra block copy mode with dual tree partition
AU2018278915A1 (en) * 2018-12-12 2020-07-02 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a transformed block of video samples
CN113228638B (zh) * 2018-12-18 2023-12-26 寰发股份有限公司 在区块分割中条件式编码或解码视频区块的方法和装置
US11758132B2 (en) * 2018-12-28 2023-09-12 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Encoder and decoder, encoding method and decoding method with complexity handling for flexibly sized picture partitions
US11290734B2 (en) 2019-01-02 2022-03-29 Tencent America LLC Adaptive picture resolution rescaling for inter-prediction and display
US10771799B2 (en) * 2019-01-15 2020-09-08 Tencent America LLC Method and apparatus for video coding
KR102392701B1 (ko) 2019-01-15 2022-04-28 엘지전자 주식회사 변환 스킵 플래그를 이용한 영상 코딩 방법 및 장치
CN113366848A (zh) 2019-02-02 2021-09-07 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的缓冲区重置
KR102653088B1 (ko) * 2019-02-02 2024-04-01 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 버퍼 초기화
WO2020177662A1 (en) * 2019-03-01 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Implementation aspects in intra block copy in video coding
CN113508597B (zh) * 2019-03-01 2023-11-21 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的基于方向的预测
CN113508581B (zh) * 2019-03-04 2023-11-14 北京字节跳动网络技术有限公司 视频编解码中的帧内块复制中的实施方式方面
US11012710B2 (en) 2019-03-06 2021-05-18 Tencent America LLC Techniques for intra prediction for 360 image and video coding
AU2019201649A1 (en) 2019-03-11 2020-10-01 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a tree of blocks of video samples
WO2020185050A1 (ko) * 2019-03-14 2020-09-17 에스케이텔레콤 주식회사 인트라 블록 복사를 이용하는 영상 부호화 및 복호화
US11252442B2 (en) * 2019-04-08 2022-02-15 Tencent America LLC Method and apparatus for video coding
US11363279B2 (en) 2019-04-15 2022-06-14 Tencent America LLC Method and apparatus in video coding with flexible coding order
CN116896634A (zh) * 2019-04-23 2023-10-17 北京字节跳动网络技术有限公司 在视频编解码中有条件地使用多重变换矩阵
AU2020276527A1 (en) * 2019-05-16 2021-09-09 Huawei Technologies Co., Ltd. An encoder, a decoder and corresponding methods using IBC dedicated buffer and default value refreshing for luma and chroma component
WO2020256483A1 (ko) * 2019-06-21 2020-12-24 삼성전자 주식회사 영상 부호화 방법 및 장치, 영상 복호화 방법 및 장치
MX2022000102A (es) 2019-07-06 2022-02-03 Beijing Bytedance Network Tech Co Ltd Bufer de prediccion virtual para la copia intra-bloque en codificacion de video.
BR112022000358A2 (pt) * 2019-07-10 2022-05-10 Beijing Bytedance Network Tech Co Ltd Método e aparelho para processar dados de vídeo e meios de armazenamento e gravação não transitórios legíveis por computador
WO2021004496A1 (en) * 2019-07-10 2021-01-14 Beijing Bytedance Network Technology Co., Ltd. Bitstream conformance constraints for intra block copy in video coding
KR20210107858A (ko) 2019-07-11 2021-09-01 텐센트 아메리카 엘엘씨 비디오 코딩을 위한 방법 및 장치
JP2022539887A (ja) 2019-07-11 2022-09-13 北京字節跳動網絡技術有限公司 映像符号化におけるイントラブロックコピーのためのビットストリーム適合性の制約
CN114979630A (zh) * 2019-08-26 2022-08-30 腾讯科技(深圳)有限公司 数据解码方法、装置和数据编码方法、装置
EP4030762A4 (en) * 2019-09-10 2023-09-06 Samsung Electronics Co., Ltd. IMAGE DECODING DEVICE USING A SET OF TOOLS AND CORRESPONDING IMAGE DECODING METHOD, AND IMAGE ENCODING DEVICE AND CORRESPONDING IMAGE ENCODING METHOD
CN112333446B (zh) * 2020-11-03 2022-11-15 中山大学 一种帧内块复制参考块压缩方法
US11949894B2 (en) 2020-12-07 2024-04-02 Tencent America LLC Method and apparatus for string matching with reference location constraints

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103238332A (zh) * 2010-12-28 2013-08-07 松下电器产业株式会社 运动图像解码方法、运动图像编码方法、运动图像解码装置、运动图像编码装置以及运动图像编解码装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080090421A (ko) * 2006-01-31 2008-10-08 톰슨 라이센싱 비디오 인코더 및 디코더에서의 해상도가 감소한 갱신모드에 대한 제약 있는 예측 및 복잡도의 크기조정을 위한방법 및 장치
US9787981B2 (en) * 2011-01-19 2017-10-10 Renesas Electronics Corporation Image coding device and image decoding device
KR102014177B1 (ko) * 2011-05-04 2019-10-21 한국전자통신연구원 에러에 강인한 인-루프 필터를 이용하는 영상 부호화/복호화 방법과 그에 관한 시그널링 방법
US20120314767A1 (en) * 2011-06-13 2012-12-13 Qualcomm Incorporated Border pixel padding for intra prediction in video coding
US9503715B2 (en) * 2013-08-30 2016-11-22 Qualcomm Incorporated Constrained intra prediction in video coding
US10003818B2 (en) 2013-10-11 2018-06-19 Sony Corporation Video coding system with intra prediction mechanism and method of operation thereof
TWI536811B (zh) * 2013-12-27 2016-06-01 財團法人工業技術研究院 影像處理方法與系統、解碼方法、編碼器與解碼器

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103238332A (zh) * 2010-12-28 2013-08-07 松下电器产业株式会社 运动图像解码方法、运动图像编码方法、运动图像解码装置、运动图像编码装置以及运动图像编解码装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JCTVC-N0256,Non-RCE3: Intra Motion Compensation with 2-D MVs;Chao Pang, Joel Sole, Liwei Guo, Marta;《JCTVC 14th Meeting》;20130802;全文

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11570447B2 (en) 2018-12-28 2023-01-31 Hangzhou Hikvision Digital Technology Co., Ltd. Video coding and video decoding

Also Published As

Publication number Publication date
AU2016203628B2 (en) 2018-05-31
KR101822765B1 (ko) 2018-01-26
RU2016113843A3 (zh) 2018-06-25
JP2016534660A (ja) 2016-11-04
KR20180010336A (ko) 2018-01-30
CN105532000A (zh) 2016-04-27
KR20160052681A (ko) 2016-05-12
US20160227244A1 (en) 2016-08-04
EP3044959A4 (en) 2017-04-19
WO2015035449A8 (en) 2015-04-23
RU2016113843A (ru) 2017-10-18
AU2016203628A1 (en) 2016-06-16
EP3044959A1 (en) 2016-07-20
WO2015035449A1 (en) 2015-03-19
AU2013228045A1 (en) 2015-04-02

Similar Documents

Publication Publication Date Title
CN105532000B (zh) 用于对视频数据进行编码和解码的方法、设备和系统
CN104782125B (zh) 对编码单位的变换单位编码和解码的方法、设备和系统
CN104685872B (zh) 对编码单位的变换单位编码和解码的方法、设备和系统
CN105264889B (zh) 用于生成帧内预测样本的方法、设备和系统
TWI820714B (zh) 用於編碼和解碼視訊樣本區塊的樹的方法、設備及系統
KR102579286B1 (ko) 비디오 샘플들의 변환된 블록을 인코딩 및 디코딩하기 위한 방법, 장치 및 시스템
CN104067624B (zh) 编码和解码变换单位的残差系数的有效性映射的方法、设备和系统
CN107660341A (zh) 切片级帧内块复制及其它视频译码改进
TW201703525A (zh) 分組用於視訊寫碼之調色盤旁通槽
TW201603562A (zh) 決定在視訊寫碼中之調色板寫碼區塊的調色板大小、調色板單元及過濾
CN106464866A (zh) 用于对视频样本的块进行去块的方法、设备和系统
TW201608880A (zh) 基於調色板之視訊寫碼中之逃脫樣本寫碼
TW201608874A (zh) 基於調色板之視訊寫碼中之寫碼行程
AU2014201583A1 (en) Method, apparatus and system for encoding and decoding video data using a block dictionary
TWI813922B (zh) 從視訊位元流解碼影像和編碼影像為視訊位元流的方法及其解碼設備和編碼設備以及非暫態電腦可讀取媒體
CN113557731B (zh) 用于编码和解码视频样本的块树的方法、设备和系统
TWI788262B (zh) 用以編碼和解碼視頻樣本之區塊樹的方法、設備及系統
CN112602327B (zh) 对视频样本的变换块编码和解码的方法、设备和系统
CN114556929A (zh) 用于视频译码的参数化基于图的可分离变换

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant