工程师使用压缩(也叫做源编码(source coding或source encoding))来降低数字视频的位率。压缩通过将视频信息转换成较低位率的形式来降低存储和传送该信息的成本。解压(也被称为解码)从压缩的形式中重构一种版本的原始信息。“编解码器”是编码器/解码器系统。
在过去的至少25年中,已采用了各种视频编解码器标准,包括ITU-T H.261、H.262(MPEG-2或ISO/IEC 13818-2)、H.263、H.264(MPEG-4AVC或ISO/IEC14496-10)标准、MPEG-1(ISO/IEC 11172-2)和MPEG-4视觉(ISO/IEC 14496-2)标准以及SMPTE 421M(VC-1)标准。最近,H.265/HEVC标准(ITU-T H.265或ISO/IEC 23008-2)已被批准。目前,(例如,用于可缩放视频编码/解码、用于在样本位深度或色度采样率方面具有较高保真度的视频的编码/解码、用于屏幕捕捉内容、或用于多视图编码/解码的)H.265/HEVC标准的扩展处于开发中。视频编解码器标准通常定义针对经编码的视频位流的句法的选项,从而详述当在编码和解码时使用特定特征时该位流中的参数。在许多情况下,视频编解码器标准还提供关于视频解码器应当执行以在解码时取得一致的结果的解码操作的细节。除了编解码器标准外,各种专用编解码器格式定义针对经编码的视频位流的句法的其他选项以及相应的解码操作。
不同的编解码器标准和格式支持不同的编码/解码工具。调色板模式是所考虑的针对用于屏幕捕捉内容的编码/解码的H.265/HEVC标准的扩展的编码/解码工具。调色板模式在编码某些“人工”创建的视频内容(诸如屏幕捕捉内容)时可能是有帮助的。屏幕捕捉内容通常包括与自然视频相比使用很少的不同色彩的重复结构(例如,图形、文本字符)。这提供了调色板模式改善性能的机会。一般来说,在调色板模式中,视频编码器使用表示调色板中的各基础色彩的索引值对各像素进行编码。一般来说,像素包括针对在图片中的位置的一个或多个样本值。索引值中的每一者与单元的各色彩中的不同值(“基础色彩”)相关联。例如,如果8x8单元在该单元的64个像素中具有4个不同的色彩,则编码器向那4个基础色彩分派4个不同的索引值。在编码期间,各像素被对应的索引值取代。编码器编码并信号化将索引值映射到基础色彩的调色板以及关于表示这些像素的索引值的布置的数据(“索引图”)。解码器接收并解码调色板和索引图。使用该信息,解码器用基础色彩取代索引图中的索引值以获得原始像素。
在调色板模式的一些设计中,稀有色彩可用逸出模式(escape mode)来编码和解码。在逸出模式中,像素不是使用调色板中的基础色彩来表示的。相反,特殊像素值标记像素以供用逸出模式进行编码和解码。经逸出编码的像素的每一样本值被量化(该量化将该样本值映射到“箱(bin)”集合中的一个“箱”以便近似该样本值)并被熵编码,这通常减少了用于表示经量化的样本值的位数。在调色板模式的逸出模式采用H.265/HEVC标准的当前设计中,对经量化的样本值的熵编码导致对某些类型的数据丢失不稳健的经编码的数据。具体地,(例如,由经编码的数据中的位翻转造成的)传输错误可导致经重构的像素的严重质量降级。
概述
总而言之,详细描述呈现用调色板模式对经逸出编码的像素进行稳健编码和解码方面的创新。例如,在调色板模式中经逸出编码的像素的样本值是使用取决于这些样本值的量化参数(“QP”)的恒定值的二值化过程来编码/解码的。或者,作为另一示例,在调色板模式中经逸出编码的像素的样本值是使用取决于这些样本值的样本深度的二值化过程来编码/解码的。或者,作为又一示例,在调色板模式中经逸出编码的像素的样本值是使用取决于某个其他固定规则的二值化过程来编码/解码的。在各示例实现中,这些方法避免在解析经逸出编码的像素的样本值时对单元级QP值的依赖性,这可使得编码/解码对数据丢失更稳健。
根据本文中描述的创新的一个方面,媒体编码器(诸如视频编码器或图像编码器)接收图片并对图片进行编码。作为对图片进行编码的一部分,媒体编码器用调色板模式对该图片的单元进行编码。通过这样做,媒体编码器用调色板模式的逸出模式独立于单元的任何单元级QP对该单元的样本值进行编码。
根据本文中描述的各创新的另一个方面,媒体解码器(诸如视频解码器或图像解码器)接收图片的经编码的数据并对该图片进行解码。作为对该图片进行解码的一部分,媒体解码器用调色板模式对该图片的单元进行解码。通过这样做,媒体解码器用调色板模式的逸出模式对该单元的样本值进行解码,而没有对该单元的单元级QP的任何解析依赖性。
本发明可以被实现为方法的部分、被配置为执行所述方法的计算系统的部分或存储用于使得计算系统执行所述方法的计算机可执行指令的有形计算机可读介质的部分。各创新可以结合地或分开地使用。提供本概述以便以简化的形式介绍将在以下的详细描述中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。参考附图阅读以下详细描述,将更清楚本发明的前述和其他目标、特征和优点。
附图简述
图1是示出可用于实现所描述的一些实施例的示例计算系统的示图。
图2a和2b是示出可用于实现所描述的一些实施例的示例网络环境的示图。
图3是示出结合其可实现所描述的一些实施例的示例视频编码器系统的示图。
图4a和4b是示出结合其可实现所描述的一些实施例的示例视频编码器的示图。
图5是结合其可实现所描述的一些实施例的示例解码器系统的示图。
图6是示出结合其可实现所描述的一些实施例的示例视频解码器的示图。
图7是用调色板模式进行编码和解码的示例的示图。
图8a和8b是示出用调色板模式的逸出模式对样本值分别进行编码和解码的示例的示图。
图9和10是示出分别用于进行编码和解码(包括用调色板模式的逸出模式对像素进行稳健编码/解码)的通用技术的流程图。
图11和12是示出使用取决于片级QP的二值化过程对样本值分别进行编码和解码的示例技术的流程图。
图13是示出用于在调色板模式中信号化经逸出编码的像素的片级QP偏移的示例句法的表格。
图14和15是示出使用取决于样本值的样本深度的二值化过程对样本值分别进行编码和解码的示例技术的流程图。
图16和17是示出用于使用k阶指数-Golomb二值化过程对样本值分别进行编码和解码的示例技术的流程图。
图18是示出用于k阶指数-Golomb二值化过程的示例技术的伪代码列表。
详细描述
该详细描述呈现用调色板模式对经逸出编码的像素进行稳健编码和解码方面的创新。例如,在调色板模式中经逸出编码的像素的样本值是使用取决于用于这些样本值的量化参数(“QP”)的恒定值的二值化过程来编码/解码的。或者,作为另一示例,在调色板模式中经逸出编码的像素的样本值是使用取决于这些样本值的样本深度的二值化过程来编码/解码的。或者,作为又一示例,在调色板模式中经逸出编码的像素的样本值是使用取决于某个其他固定规则的二值化过程来编码/解码的。在各示例实现中,这些方法避免在解析经逸出编码的像素的样本值时对单元级QP值的依赖性,这可使得编码/解码对数据丢失更稳健。
本文中描述的一些创新是参考针对H.265/HEVC标准以及H.265/HEVC标准的扩展的条款来解说的。例如,一些创新被描述为相对于标题为“High Efficiency Video Coding(HEVC)Screen Content Coding:Draft 3(高效视频编码(HEVC)屏幕内容编码:草稿3)”的文档JCTVC-T1005-v2的特征的改变。本文中描述的创新也可针对其他视频编解码器标准或格式(例如,VP9格式、H.264/AVC标准)来实现。或者,本文中描述的创新可针对图像编解码器标准或格式来实现。
在本文中描述的示例中,不同的图中的相同参考标记指示相同的组件、模块或操作。取决于上下文,给定组件或模块可接受不同类型的信息作为输入和/或产生不同类型的信息作为输出。
更一般地,本文中描述的各示例的各种替代是可能的。例如,本文中描述的一些方法可以通过改变描述的方法动作的顺序、通过拆分、重复或忽略某些方法动作等来更改。所公开的技术的各方面能够被组合地或分开地使用。不同的实施例使用所描述的创新中的一个或多个。本文中描述的一些创新解决了背景中指出的一个或多个问题。通常,所给出的技术/工具并不解决所有这些问题。
I.示例计算系统
图1示出了在其中可实现若干所描述的发明的合适的计算环境(100)的一般化示例。计算系统(100)并不旨对使用范围或功能提出任何限制,因为这些创新可以在不同的通用或专用计算系统中实现。
参考图1,计算环境(100)包括一个或多个处理单元(110、115)和存储器(120、125)。处理单元(110、115)执行计算机可执行指令。处理单元可以是通用中央处理单元(“CPU”)、专用集成电路(“ASIC”)中的处理器或任何其它类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。例如,图1示出中央处理单元(110)以及图形处理单元或协处理单元(115)。有形存储器(120、125)可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等)或两者的某种组合,可由处理单元存取。存储器(120,125)存储实现针对切换色彩空间时的编码或解码的一个或多个创新的软件(180),该软件采用适用于由(诸)处理单元执行的计算机可执行指令的形式。
计算系统可具有附加的特征。例如,计算系统(100)包括存储(140)、一个或多个输入设备(150)、一个或多个输出设备(160)以及一个或多个通信连接(170)。诸如总线、控制器或网络之类的互连机制(未示出)将计算系统(100)的各组件互连。通常,操作系统软件(未示出)为在计算系统(100)中执行的其它软件提供操作环境,并协调计算系统(100)的各组件的活动。
有形存储(140)可以是可移动或不可移动的,并包括磁盘、磁带或磁带盒、诸如CD-ROM、DVD之类的光学媒体或可用于储存信息并可在计算系统(100)内访问的任何其他介质。存储(140)存储实现针对用调色板模式对经逸出编码的像素进行稳健编码/解码的一个或多个创新的软件(180)的指令。
(诸)输入设备(150)可以是触摸输入设备(诸如键盘、鼠标、笔或跟踪球)、语音输入设备、扫描设备或向计算系统(100)提供输入的另一设备。对于视频,(诸)输入设备(150)可以是相机、视频卡、屏幕捕捉模块、TV调谐卡或接受模拟或数字形式的视频输入的类似设备、或将视频输入读到计算系统(100)中的CD-ROM或CD-RW。(诸)输出设备(160)可以是显示器、打印机、扬声器、CD刻录机或提供来自计算系统(100)的输出的另一设备。
(诸)通信连接(170)允许通过通信介质与另一计算实体通信。通信介质传达诸如计算机可执行指令、音频或视频输入或输出、或已调制数据信号中的其他数据之类的信息。已调制数据信号是使其一个或多个特征以在信号中编码信息的方式设置或改变的信号。作为示例而非限制,通信介质可以使用电的、光学的、RF或其它载体。
各创新可以在计算机可读介质的一般上下文中描述。计算机可读介质是可在计算环境内访问的任何可用有形介质。作为示例而非限制,对于计算系统(100),计算机可读介质包括存储器(120,125)、存储(140)及其组合。如本文中所使用的,术语计算机可读介质不包括瞬时信号或传播载波。
各创新可在计算机可执行指令(诸如包括在程序模块中的在目标现实或虚拟处理器上在计算系统中执行的那些计算机可执行指令)的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。如各实施例中所描述的,这些程序模块的功能可以被组合,或者在这些程序模块之间拆分。针对各程序模块的计算机可执行指令可以在本地或分布式计算系统中执行。
术语“系统”和“设备”在此被互换地使用。除非上下文明确指示,否则,术语并不暗示对计算系统或计算设备的类型的任何限制。一般说来,计算系统或计算设备可以是本地的或分布式的,并且可以包括具有实现本文中描述的功能的软件的专用硬件和/或通用硬件的任意组合。
所公开的方法还可使用被配置成执行所公开的方法中的任一者的专用计算硬件来实现。例如,所公开的方法可以由被专门设计或配置成实现所公开的方法中的任一者的集成电路(例如,诸如ASIC数字信号处理器(“DSP”)之类的ASIC、图像处理单元(“GPU”)、或诸如场可编程门阵列(“FPGA”)之类的可编程逻辑器件(“PLD”))来实现。
为了呈现起见,本详细描述使用了如“确定”和“评估”等术语来描述计算系统中的计算机操作。这些术语是对由计算机执行的操作的高级抽象,且不应与人类所执行的动作混淆。对应于这些术语的实际的计算机操作取决于实现而不同。
II.示例网络环境
图2a和2b示出了包括视频编码器(220)和视频解码器(270)的示例网络环境(201,202)。编码器(220)和解码器(270)使用合适的通信协议通过网络(250)连接。网络(250)可包括因特网或另一计算机网络。
在图2a中所示的网络环境(201)中,每个实时通信(“RTC”)工具(210)包括用于双向通信的编码器(220)和解码器(270)两者。给定的编码器(220)可以产生输出,该输出遵循H.265/HEVC标准、SMPTE 421M标准、ISO/IEC 14496-10标准(也称为H.264或AVC)、另一标准的变体或扩展,或遵循针对接受来自编码器(220)的经编码的数据的对应的解码器(270)的专用格式(诸如VP8或VP9)。双向通信可以是视频会议、视频电话呼叫或其它双方或多方通信场景的部分。虽然,图2a中的网络环境(201)包括两个实时通信工具(210),但网络环境(201)可改为包括参与多方通信的三个或更多的实时通信工具(210)。
实时通信工具(210)管理编码器(220)作出的编码。图3示出可以被包括在实时通信工具(210)中的示例编码器系统(300)。替换地,实时通信工具(210)使用另一编码器系统。实时通信工具(210)还管理解码器(270)作出的解码。图5示出可以被包括在实时通信工具(210)中的示例解码器系统(500)。替换地,实时通信工具(210)使用另一解码器系统。
在图2b中示出的网络环境(202)中,编码工具(212)包括对供递送给多个回放工具(214)的视频进行编码的编码器(220),这些回放工具包括解码器(270)。单向通信可被提供用于视频监视系统、web相机监视系统、远程桌面会议演示或共享、无线屏幕投射、云计算或游戏、在其中编码视频并将视频从一个位置发送到一个或多个其它位置的其它场景。虽然在图2b中的网络环境(202)包括两个回放工具(214),该网络环境(202)可以包括更多或更少的回放工具(214)。一般来说,回放工具(214)与编码工具(212)通信以确定回放工具(214)要接收的视频流。回放工具(214)接收该流、缓冲所接收的经编码数据达合适的时间段并开始解码和回放。
图3示出可以被包括在编码工具(212)中的示例编码器系统(300)。替换地,编码工具(212)使用另一编码器系统。编码工具(212)还可以包括用于管理与一个或多个回放工具(214)的连接的服务器侧控制器逻辑。回放工具(214)可包括用于管理与编码工具(212)的连接的客户机侧控制器逻辑。图5示出可以被包括在回放工具(214)中的示例解码器系统(500)。替换地,回放工具(214)使用另一解码器系统。
III.示例编码器系统。
图3示出结合其可实现所描述的一些实施例的示例视频编码器系统(300)。视频编码器系统(300)包括视频编码器(340),视频编码器(340)在图4a和4b中被进一步详述。
视频编码器系统(300)可以是能够用多种编码模式中的任一者(诸如用于实时通信的低等待时间编码模式、转码模式和用于从文件或流中产生供回放的媒体的较高等待时间编码模式)操作的通用编码工具,或它可以是适用于一种这样的编码模式的专用编码工具。视频编码器系统(300)可适用于编码特定类型的内容。视频编码器系统(300)可以被实现为操作系统模块的部分、应用库的部分、独立的应用的部分或使用专用的硬件。总体上,视频编码器系统(300)从视频源(310)接收源视频图片(311)序列并产生经编码的数据作为到信道(390)的输出。输出到信道的经编码的数据可包括使用本文中描述的一个或多个创新编码的内容。
视频源(310)可以是相机、调谐卡、存储介质、屏幕捕捉模块或其它数字视频源。所述视频源(310)以例如每秒30帧的帧速率产生视频图片序列。如在此所用,术语“图片”一般是指源、已译码的或已重构的图像数据。对于逐行扫描视频,图片是逐行扫描视频帧。对于隔行视频,在各示例实施例中,隔行视频帧可以在编码之前被去隔行。替换地,两个互补的隔行视频场可以被编码在一起作为单个视频帧或者被编码成两个经分开编码的场。除了指示逐行扫描视频帧或隔行扫描视频帧之外,术语“图片”可以指示单个非成对的视频场、互补的成对视频场、表示在给定时间或在较大的图像中的感兴趣区域处的视频对象的视频对象平面。视频对象平面或区域可以是包括场景的多个对象或区域的较大图像的一部分。
正在到达的源图片(311)被存储在包括多个图片缓冲存储区域(321,322,…,32n)的源图片临时存储器存储区域(320)中。图片缓冲器(321,322等)在源图片存储区域(320)中保持一个源图片。在已经将一个或多个源图片(311)存储在图片缓冲器(321,322等)中之后,图片选择器(330)从源图片存储区域(320)中选择个体源图片来编码为当前图片(331)。各图片被图片选择器(330)选择用于输入到视频编码器(340)的次序可以与视频源(310)产生这些图片的次序不同,例如对某些图片的编码可在次序上被延迟,以便允许某些较后的图片被先编码并由此促成时间上的后向预测。视频编码器系统(300)可在视频编码器(340)之前包括在编码之前对当前图片(331)执行预处理(例如滤波)的预处理器(未示出)。该预处理可包括将色彩空间转换成主要(例如亮度)和次要(例如偏向红色和偏向蓝色的色度差)分量以及对编码的重采样处理(例如以减少色度分量的空间分辨率)。由此,在编码之前,视频可以被转换成诸如YUV的色彩空间,在其中亮度(Y)分量的样本值表示明亮度或强度值,而色度(U,V)分量的样本值表示色差值。色差值(以及从YUV色彩空间到诸如RGB的另一色彩空间/从另一色彩空间到YUV色彩空间的转换操作)的精确定义取决于实现。一般来说,如本文中所使用的,术语YUV指示具有亮度(或照度)分量和一个或多个色度(或色差)分量的任意色彩空间,包括Y’UV、YIQ、Y’IQ和YDbDr以及诸如YCbCr和YCoCg之类的变体。色度样本值可以被子采样到较低的色度采样率(例如针对YUV 4:2:0格式或YUV 4:2:2格式的情况),或者色度样本值可以具有与亮度样本值相同的分辨率(例如针对YUV4:4:4格式的情况)。替换地,视频可根据另一格式(例如RGB 4:4:4格式、GBR 4:4:4格式或BGR 4:4:4格式)来组织。一般来说,像素是针对在图片中的位置的一个或多个搭配样本值的集合,该集合对于不同的色度采样格式可用不同的方式来布置。
视频编码器(340)对当前图片(331)进行编码以产生经编码的图片(341)。如图4a和4b所示,视频编码器(340)接收当前图片(331)作为输入视频信号(405),并在经编码的视频位流(495)中产生经编码的图片(341)的经编码的数据作为输出。作为该编码的一部分,在一些情况下,视频编码器(340)使用用调色板模式对经逸出编码的像素的稳健编码。
通常,视频编码器(340)包括执行诸如分割成小块、图片内预测估计和预测、调色板模式编码、运动估计和补偿、频率变换、量化和熵译码之类的编码任务。视频编码器(340)的许多组件被用于图片内编码和图片间编码两者。由视频编码器(340)执行的确切操作可取决于压缩格式而变化,并可取决于编码器可选的实现判定而变化。输出的经编码数据的格式可以是Windows媒体视频格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG-2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263或H.264)、或VPx格式、或其它格式的变型或扩展。
如图4a所示,视频编码器(340)可包括小块化模块(410)。使用小块化模块(410),视频编码器(340)可将图片分割成相同尺寸或不同尺寸的多个小块。例如,小块化模块(410)沿小块行和小块列来拆分图片,所述小块行和小块列利用图片边界定义在图片内的小块的水平和垂直边界,其中每个小块是矩形区域。小块通常被用于提供并行处理的选项。图片还可以被组织为一个或多个片,其中一个片可以是整个图片或图片的部分。片可以独立于图片中的其它片被解码,这改善了错误复原力。出于编码和解码的目的,片或小块的内容被进一步分割成块或其它采样值集。块可在不同的阶段(例如在预测、频率变换和/或熵编码阶段)被进一步细分。例如,图片可以被划分成64x64块、32x32块或16x16块,这些块进而可被划分成更小的样本值块以用于编码和解码。
对于根据H.264/AVC标准的句法,视频编码器(340)可以将图片分割成相同尺寸或不同尺寸的多个片。视频编码器(340)将图片(或片)的内容拆分成各16x16宏块。宏块包括被组织为4个8x8亮度块的亮度样本值和被组织为8x8色度块的相应的色度样本值。通常,宏块具有诸如帧间或帧内之类的预测模式。宏块包括用于信号化预测信息(例如预测模式细节、运动向量(“MV”)信息等)和/或预测处理的目的的一个或多个预测单元(例如,各8x8块、各4x4块,这些块可被称为用于图片间预测的分区)。宏块还具有用于残量编码/解码目的的一个或多个残量数据单元。
对于根据H.265/HEVC标准的句法来说,视频编码器(340)将图片(或片或小块)的内容拆分成各编码树单元。编码树单元(“CTU”)包括被组织为亮度编码树块(“CTB”)的亮度采样值,并且对应的色度样本值被组织为两个色度CTB。CTU(及其CTB)的尺寸由视频编码器选择。亮度CTB可包含例如64x64、32x32或16x16亮度样本值。CTU包括一个或多个编码单元。编码单元(“CU”)具有亮度编码块(“CB”)和两个对应的色度CB。例如,根据四叉树句法,具有64x64亮度CTB和两个64x64色度CTB(YUV 4:4:4格式)的CTU可以被拆分成4个CU,其中每一CU包括一32x32亮度CB和两个32x32色度CB,并且根据四叉树句法,每一CU可能被进一步拆分成更小的CU。或者,作为另一示例,根据四叉树句法,具有64x64亮度CTB和两个32x32色度CTB(YUV 4:2:0格式)的CTU可被拆分成4个CU,其中每一CU包括一32x32亮度CB和两个16x16色度CB,并且根据四叉树句法,每一CU可被进一步拆分成更小的CU。
在H.265/HEVC实现中,CU具有诸如帧间或帧内之类的预测模式。CU通常包括用于信号化预测信息(例如预测模式细节、移位值等)和/或预测处理的目的的一个或多个预测单元。预测单元(“PU”)具有亮度预测块(“PB”)和两个对应的色度PB。根据H.265/HEVC标准,对于图片内预测的CU,PU具有与该CU相同的尺寸,除非该CU具有最小尺寸(例如8x8)。在那个情况下,CU可被拆分成更小的PU(例如,对于图片内预测情况,如果最小CU尺寸为8x8,则被拆分成四个4x4PU),或者PU可具有最小CU尺寸,如CU的句法元素所指示的。对于图片间预测的CU,该CU可具有一个、两个或四个PU,其中拆分成四个PU仅在该CU具有最小可允许尺寸的情况下才被允许。
在H.265/HEVC实现中,CU通常还具有用于残量编码和解码的目的的一个或多个变换单元,其中变换单元(“TU”)具有亮度变换块(“TB”)和两个色度TB。CU可包含单个TU(在尺寸上等于该CU)或多个TU。根据四叉树句法,TU可被拆分为四个更小的TU,这些TU可进而根据四叉树句法被拆分成更小的TU。视频编码器决定如何将视频分割成CTU(CTB)、CU(CB)、PU(PB)和TU(TB)。
在H.265/HEVC实现中,片可包括单个片段(独立的片段)或被划分成多个片段(独立的片段和一个或多个从属的片段)。片段是包含在单个网络抽象层(“NAL”)单元中的在小块扫描中连续排序的整数个CTU。对于独立的片段,片段头部包括适用于该独立的片段的句法元素的值。对于从属片段,截短的片段头部包括适用于该从属片段的句法元素的几个值,并且从属片段的其它句法元素的值是以解码顺序从在前的独立的片段的值中推导出来的。
如本文中所使用的,术语“块”可指示宏块、残量数据单元、CTB、CB、PB或TB、或某些其它样本值集,这取决于上下文。术语“单元”可指示宏块、CTU、CU、PU、TU或某些其他块集,或者它可指示单个块,这取决于上下文。
如图4a所示,视频编码器(340)包括通用编码控件,该通用编码控件(420)接收当前图片(331)的输入视频信号(405)以及来自视频编码器(340)的各个模块的反馈(未示出)。整体上,通用编码控件(420)将控制信号(未示出)提供给其它模块(诸如小块化模块(410)、变换器/缩放器/量化器(430)、缩放器/逆变换器(435)、图片内预测估计器(440)、运动估计器(450)、调色板模式编码器(480)以及帧内/帧间切换)以设置和改变编码期间的编码参数。通用编码控件(420)还可评估编码期间的中间结果,通常考虑不同选项的位率成本和/或失真成本。具体地,通用编码控件(420)判定将图片内预测还是图片间预测用于当前图片(331)的各单元,并且在图片内预测被用于某单元的情况下判定将空间预测(外推)、帧内块复制预测还是调色板模式用于该单元。通用编码控件(420)产生指示在编码期间作出的判定的通用控制数据(422),使得对应的解码器可以作出一致的判定。例如,通用控制数据(422)包括指示针对某单元的图片内编码使用调色板编码模式还是空间预测(例如,每个经图片内预测的单元一个标志值)的信息。通用控制数据(422)被提供给头部格式化器/熵编码器(490)。
参考图4b,如果当前图片(331)中的单元是使用图片间预测来预测的,则运动估计器(450)估计该单元的样本值块相对于一个或多个参考图片的运动。当前图片(331)可全部或部分使用图片间预测来编码。当使用多个参考图片时,这多个参考图片可以来自不同的时间方向或相同的时间方向。运动估计器(450)潜在地评估处于上下文运动模式的候选MV以及其他候选MV。对于上下文运动模式,作为单元的候选MV,运动估计器(450)评估在运动补偿时对局部邻域中的某些相邻单元使用的一个或多个MV或依据规则推导出的一个或多个MV。针对上下文运动模式的候选MV可包括来自空间上毗邻的单元的MV、来自时间上毗邻的单元的MV以及依据规则推导出的MV。在H.265/HEVC标准中,合并模式是上下文运动模式的示例。在一些情况下,上下文运动模式可涉及多个推导出MV之间的竞争以及对多个推导出MV之一的选择。运动估计器(450)可为当前图片(331)的给定单元的分割(例如,在H.265/HEVC标准中为针对CU的各PU的2N×2N、2N×N、N×2N或N×N分割)评估运动补偿的不同分割模式。
解码图片缓冲器(470)(其是如图3所示的经解码图片临时存储器存储区域(360)的示例)缓冲一个或多个经重构的先前编码的图片以供用作参考图片。运动估计器(450)产生运动数据(452)作为辅助信息。具体地,运动数据(452)可包括指示上下文运动模式(例如,在H.265/HEVC标准中为合并模式)是否被使用的信息,以及如果上下文运动模式被使用,则包括指示上下文运动模式的候选MV的信息(例如,在H.265/HEVC标准中为合并模式索引值)。更一般地,运动数据(452)可包括MV数据和参考图片选择数据。运动数据(452)被提供给头部格式化器/熵编码器(490)以及运动补偿器(455)。运动补偿器(455)将块的(诸)MV应用于来自经解码图片缓冲器(470)的(诸)经重构的参考图片。对于该块,运动补偿器(455)产生运动补偿预测,其是用来生成该块的运动补偿预测值的(诸)参考图片中的样本值区域。
参考图4b,如果当前图片(331)的单元是使用图片内预测来预测的,则图片内预测估计器(440)确定如何执行针对该单元的样本值块的图片内预测。当前图片(331)可全部或部分使用图片内预测来编码。对于帧内空间预测,图片内估计器(440)使用当前图片(331)的重构(438)的值来确定如何从当前图片(331)的邻近的、先前重构的样本值中空间地预测当前图片(331)的块的样本值,例如估计邻近的经重构的样本值到该块的外推。或者,对于帧内块复制模式,图片内预测估计器(440)使用指示当前图片(331)的先前编码/解码的部分的偏移(有时被称为块向量)来确定如何预测当前图片(331)的块的样本值。帧内块复制模式可被实现为图片间预测的特殊情况,其中参考图片是当前图片(331),并且仅当前图片(331)的先前编码/解码的样本值可被用于预测。作为辅助信息,图片内预测估计器(440)产生诸如所使用的预测模式/方向之类的帧内预测数据(442)。帧内预测数据(442)被提供给头部格式化器/熵编码器(490)以及图片内预测器(445)。根据帧内预测数据(442),图片内预测器(445)从当前图片(331)的邻近的、先前重构的样本值中空间地预测当前图片(331)的块的样本值,从而产生该块的图片内预测值。或者,图片内预测器(445)使用帧内块复制预测使用针对该块的偏移(块向量)来预测该块的样本值。
调色板模式编码器(480)使用将基础色彩映射到索引值的调色板并用相应的索引值替换各像素来用针对当前图片(331)的某单元的像素之中的基础色彩的索引值来表示该单元。例如,调色板将索引值0,1,2,…,p映射到对应的基础色彩,基础色彩可采用RGB 4:4:4格式、BGR 4:4:4格式、GBR 4:4:4格式、YUV 4:4:4格式或另一个格式(色彩空间、色彩采样率)。由此,例如,索引值可表示像素的RGB三元组、BGR三元组或GBR三元组。单元可以是CU,在该情况下,调色板开在逐CU的基础上改变。调色板模式编码的示例是参考图7、8a和8b来描述的。在一些情况下,调色板模式编码器(480)可用逸出模式而非使用针对调色板中的这样的色彩的索引值来对稀有色彩进行编码。在逸出模式中,特殊索引值将像素标记为经逸出编码的像素。经逸出编码的像素的(诸)样本值可在编码器(340)中的其他地方(或者,替换地在调色板模式编码器(480)中)被量化并随后被熵编码。作为辅助信息,调色板模式编码器(480)产生诸如指示单元的调色板(其可相关于预测的调色板来编码)和该单元的索引值(有时被称为索引图)的信息之类的调色板模式数据(482)。调色板模式数据(482)被提供给头部格式化器/熵编码器(490)以及调色板模式解码器(485)。
如图4b所示,在非调色板模式中,帧内/帧间切换选择针对给定单元的预测(458)将是运动补偿预测还是图片内预测。针对当前图片(331)的各单元的帧内/帧间切换判定可使用各准则来作出。
在非调色板模式中,视频编码器(340)可确定是否编码并传送某块的预测值(帧内或帧间)和对应的原始值之间的差值(如果有的话)。预测(458)的块和输入视频信号(405)的原始当前图片(331)的对应部分之间的差异(如果有的话)提供残量(418)的值。如果被编码/传送,则残量(418)的值使用频率变换(如果该频率变换不被跳过的话)、量化和熵编码来编码。在一些情况下,没有为单元计算残量。相反,残量编码被跳过,并且预测的样本值被用作经重构的样本值。对于一些类型的单元(例如,仅图片间编码单元)或所有类型的单元,关于是否跳过残量编码的判定可在逐单元的基础上(例如,在H.265/HEVC标准中在逐CU的基础上)作出。在调色板模式中,视频编码器(340)跳过残量编码操作,但可对用逸出模式编码的像素的样本值进行量化。
参考图4a,对于非调色板模式,当残量(418)的值被编码时,在变换器/缩放器/量化器(430)中,频率变换器将空间域视频信息转换为频域(即频谱、变换)数据。对于基于块的视频编码,频率变换器将离散余弦变换(“DCT”)、其整数近似、或另一类型的前向块变换(例如离散正弦变换或其整数近似)应用于残量(418)的值块(或者如果预测(458)为空则应用于样本值数据),从而产生频率变换系数块。变换器/缩放器/量化器(430)可以应用具有可变块尺寸的变换。在这种情况中,变换器/缩放器/量化器(430)可以确定要对当前块的残量值使用哪些块尺寸的变换。例如,在H.265/HEVC实现中,编码器/缩放器/量化器(430)可通过四叉树分解将TU拆分成四个更小的TU,这些TU中的每一者可进而被拆分成四个更小的TU,一直到最小TU尺寸。TU尺寸可以为32x32、16x16、8x8或4x4(涉及TU中的亮度TB的尺寸)。
在H.265/HEVC实现中,对于非调色板模式,可以跳过频率变换。在这种情况下,可以对残量(418)的值进行量化和熵编码。具体地,变换跳过模式在对屏幕内容视频进行编码时可以是有用的,但在对其他类型的视频进行编码时不是特别有用。
参考图4a,对于非调色板模式,在编码器/缩放器/量化器(430)中,缩放器/量化器缩放和量化变换系数。例如,量化器将以按逐图片基础、逐小块基础、逐片基础、逐块基础、频率专用基础或其它基础来变化的量化步长尺寸将死区标量量化应用于频域数据。量化步长尺寸可取决于量化参数(“QP”),该量化参数的值是为视频的图片、小块、片和/或其他部分设置。在量化变换系数时,视频编码器(340)可使用率失真优化量化(“RDOQ“)(这是非常耗时的)或者应用更简单的量化规则。经量化的变换系数数据(432)被提供给头部格式化器/熵编码器(490)。对于非调色板模式,如果频率变换被跳过,则缩放器/量化器可对预测残量数据块(或如果预测(458)为空则对样本值数据)进行缩放和量化,从而产生经量化的值,这些经量化的值被提供给头部格式化器/熵编码器(490)。或者,对于调色板模式中的经逸出编码的像素,缩放器/量化器可对逸出模式中的像素的样本值进行量化,从而将经逸出编码的像素的经量化的样本值提供给头部格式化器/熵编码器(490)。
如图4a和4b所示,头部格式化器/熵编码器(490)对通用控制数据(422)、经量化的变换系数数据(432)(或者对于调色板模式的逸出模式,为经量化的样本值)、帧内预测数据(442)、运动数据(452)、调色板模式数据(482)以及滤波器控制数据(462)进行格式化和/或熵编码。由此,视频编码器(340)的熵编码器压缩经量化的变换系数值以及某些辅助信息(例如MV信息、QP值、模式判定、参数选择、调色板数据、调色板模式中的索引值、调色板模式中的经量化的样本值)。典型的熵编码技术包括指数-Golomb编码、Golomb-Rice编码、上下文自适应二进制算术编码(“CABAC”)、差分编码、Huffman编码、行程长度编码、可变长度到可变长度(“V2V”)编码、可变长度到固定长度(“V2F”)编码、Lempel-Ziv(“LZ”)编码、字典编码和上述编码的组合。熵编码器可对不同种类的信息使用不同的编码技术,并可组合地应用多个技术(例如,通过在CABAC的二值化时应用指数-Golomb编码或Golomb-Rice编码),并可从特定编码技术内的多个码表中进行选择。
视频编码器(340)在基本位流(诸如图4a中示出的经编码视频位流(495))中产生经编码图片(341)的经编码数据。在图4a中,头部格式化器/熵编码器(490)在经编码的视频位流(495)中提供经编码的数据。基础位流的句法通常是用编解码器标准或格式或者其扩展或变型来定义的。例如,经编码的视频位流(495)的格式可以是Windows媒体视频格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG-2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263、H.264、H.265)、VPx格式或其它格式的变型或扩展。在从视频编码器(340)输出后,基本位流通常用容器格式被分组化或组织,如以下所解释的。
基本位流中的经编码的数据包括被组织为句法结构的句法元素。一般来说,句法元素可以是任何数据元素,并且句法结构是基本位流中处于指定次序的零个或更多个句法元素。在H.264/AVC标准和H.265/HEVC标准中,NAL单元是包含(1)对要跟随的数据的类型的指示以及(2)该数据的一连串零个或更多个字节的句法结构。例如,NAL单元可包含片(经编码的片)的经编码的数据。NAL单元的尺寸(以字节为单位)在NAL单元之外被指示。经编码片NAL单元以及某些其他限定类型的NAL单元被称为视频编码层(“VCL”)NAL单元。访问单元是处于连续解码次序的一个或多个NAL单元的集合,包含图片的(诸)片的经编码的数据,并可能包含诸如元数据之类的其他关联数据。
对于根据H.264/AVC或H.265/HEVC的标准的句法,图片参数集(“PPS”)是包含可与图片相关联的句法元素的句法结构。PPS可被用于单个图片,或者PPS可被重用于序列中的多个图片。PPS通常被信号化为与图片的经编码的数据分开(例如一个NAL单元针对PPS,并且一个或多个其他NAL单元针对图片的经编码的数据)。在图片的经编码数据内,句法元素指示要为该图片使用哪个PPS。类似地,对于遵照H.264/AVC标准或H.265/HEVC的标准的句法,序列参数集(“SPS”)是包含了与图片序列相关联的句法元素的句法结构。位流可包括单个SPS或多个SPS。SPS通常被信号化为与该序列的其它数据分开,并且其它数据中的句法元素指示要使用哪个SPS。
如图3所示,视频编码器(340)还产生存储器管理控制操作(“MMCO”)信号(342)或参考图片集(“RPS”)信息。RPS是可以被使用以供在对当前图片或任意后续图片的运动补偿中的参考的图片集。如果当前图片(331)不是已经被编码的第一图片,则在执行其编码处理时,视频编码器(340)可使用已被存储在经解码图片临时存储器存储区域(360)中的一个或多个先前编码/解码的图片(369)。这样存储的经解码图片(369)被用作当前图片(331)的内容的图片间预测的参考图片。MMCO/RPS信息(342)向视频解码器指示哪些经重构的图片可被用作参考图片并因此应当被存储在图片存储区域中。
参考图3,经编码图片(341)和MMCO/RPS信息(342)(或与MMCO/RPS信息(342)等价的信息,因为在视频编码器(340)处已经知道各图片的依赖关系和排序结构)由解码处理仿真器(350)处理。解码处理仿真器(350)实现视频解码器的一些功能,例如对任务进行解码以重构参考图片。以与MMCO/RPS信息(342)相一致的方式,解码处理仿真器(350)确定给定的经编码帧(341)是否需要被重构并被存储以供在对要编码的后续图片的图片间预测中用作参考帧。如果经编码的图片(341)需要被存储,则解码处理仿真器(350)对将由视频解码器进行的解码处理建模,该视频解码器接收经编码的图片(341)并产生相应的经解码的图片(351)。通过这么做,当视频编码器(340)已经使用已被存储在经解码图片存储区域(360)中的经解码的(诸)图片(369)时,解码处理仿真器(350)还使用来自存储区域(360)的(诸)经解码的图片(369)作为解码处理的一部分。
解码处理仿真器(350)可被实现为视频编码器(340)的一部分。例如,解码处理仿真器(350)包括图4a和4b中示出的一些模块和逻辑。在当前图片(331)的重构期间,对于非调色板模式,当残量(418)的值已被编码/信号化时,经重构的残量值与预测(458)组合以为当前图片(331)从视频信号(405)中产生对原始内容的近似或实际重构(438)。(在有损压缩中,一些信息从视频信号(405)中丢失。)对于调色板模式,有效地,预测(458)为空。
对于非调色板模式,为了重构残量值,在缩放器/逆变换器(435)中,缩放器/逆量化器对经量化的变换系数执行逆缩放和逆量化。当变换阶段尚未被跳过时,逆频率变换器执行逆频率变换,从而产生经重构的预测残量值或样本值的块。如果变换阶段已经被跳过,则也跳过逆频率变换。在这种情况下,缩放器/逆量化器可对预测残量数据(或样本值数据)的块执行逆缩放和逆量化,从而产生经重构的值。当残量值已经被编码/信号化时,视频编码器(340)将经重构的残量值与预测(458)的值(例如,运动补偿预测值、图片内预测值)组合以形成重构(438)。当残量值尚未被编码/信号化时,视频编码器(340)使用预测(458)的值作为重构(438)。
对于调色板模式,调色板模式解码器(485)使用来自调色板模式数据(482)的索引值和调色板来重构像素(即,未经逸出编码的像素)。为了任何经逸出编码的像素,在缩放器/逆变换器(435)中,缩放器/逆量化器对用逸出模式编码的像素的经量化样本值执行逆缩放和逆量化。经重构的样本值提供重构(438)的值,因为在调色板模式中预测(458)为空。
对于图片内预测,重构(438)的值可被馈送回图片内预测估计器(440)和图片内预测器(445)。重构(438)的值可被用于后续图片的运动补偿预测。重构(438)的值可被进一步滤波。对于当前图片(331),滤波控件(460)确定如何对重构(438)的值执行去块滤波和样本自适应偏移(“SAO”)滤波。滤波控件(460)产生滤波控制数据(462),它被提供给头部格式化器/熵编码器(490)和合并器/(诸)滤波器(465)。
在合并器/(诸)滤波器(465)中,视频编码器(340)将来自不同小块的内容合并到当前图片的经重构版本中。视频编码器(340)根据滤波器控制数据(462)和滤波器自适应规则选择性地执行去块滤波和SAO滤波,以便自适应地平滑当前图片(331)中的各边界上的间断。可替换地或另外地应用其它滤波(例如去振铃滤波或自适应环路滤波(“ALF”);未示出)。取决于视频编码器(340)的设置,小块边界可选择性地被滤波或根本不被滤波,并且视频编码器(340)可在编码位流内提供句法元素以指示是否应用这样的滤波。
在图4a和4b中,经解码图片缓冲器(470)缓冲经重构的当前图片以供在后续的运动补偿预测中使用。更一般地,如图3所示,经解码图片临时存储器存储区域(360)包括多个图片缓冲器存储区域(361,362,…,36n)。通过与MMCO/RPS信息(342)相一致的方式中,解码处理仿真器(350)管理存储区域(360)中的内容,以便标识出具有视频编码器(340)不再需要将其用作参考图片的图片的任何图片缓冲器(361,362等)。在对解码处理进行建模之后,解码处理仿真器(350)在图片帧缓冲器(361、362等)中存储已经以此方式标识出的新解码的图片(351)。
如图3所示,经编码的图片(341)和MMCO/RPS信息(342)被缓冲在临时经编码数据区域(370)中。被聚集在经编码数据区域(370)中的经编码数据包含一个或多个图片的经编码数据作为基本位流的句法的一部分。被聚集在经编码数据区域(370)中的经编码数据还可包括与经编码的视频数据相关的媒体元数据(例如作为一个或多个补充增强信息(“SEI”)消息或视频可用性信息(“VUI”)消息中的一个或多个参数)。
来自临时经编码数据区域(370)的经聚集的数据(371)由信道编码器(380)处理。信道编码器(380)可以分组化和/或复用经聚集的数据以供作为媒体流传输或存储(例如根据媒体程序流或传输流格式,例如ITU-T H.222.0|ISO/IEC 13818-1或因特网实时传输协议格式(例如IETF RFC 3550)),在这种情况中,信道编码器(380)可以添加句法元素作为媒体传输流的句法的一部分。或者,信道编码器(380)可以组织经聚集的数据以供存储成文件(例如根据媒体容器格式,诸如ISO/IEC 14496-12),在这种情况中信道编码器(380)可添加句法元素作为媒体存储文件的句法的一部分。或者,更一般地,信道编码器(380)可以实现一个或多个媒体系统复用协议或传输协议,在这种情况中,信道编码器(380)可以添加句法元素作为(诸)协议的句法的一部分。信道编码器(380)将输出提供给信道(390),该信道(390)表示存储、通信连接或该输出的另一信道。信道编码器(380)或信道(390)还可以包括例如用于前向纠错(“FEC”)编码和模拟信号调制的其它元素(未示出)。
取决于实现和期望的压缩类型,视频编码器系统(300)和/或视频编码器(340)的各模块可被添加、省略、拆分成多个模块、与其它模块组合、和/或用相似的模块来替代。在替换实施例中,具有不同模块和/或其他模块配置的编码器系统或编码器执行所描述的技术中的一个或多个。编码器系统的具体实施例通常使用视频编码器系统(300)的变型或补充版本。视频编码器的具体实施例通常使用视频编码器340的变型或补充版本。所示出的在视频编码器系统(300)和视频编码器(340)内的各模块之间的关系指示了信息分别在视频编码器系统(300)和视频编码器(340)中的一般流动;为简明起见,未示出其它关系。
IV.示例解码器系统。
图5是结合其可实现所描述的一些实施例的示例视频解码器系统(500)的框图。视频解码器系统(500)包括视频解码器(550),视频解码器(340)在图6中被进一步详述。
视频解码器系统(500)可以是能够在多种解码模式(例如针对实时通信的低等待时间解码模式、代码转换模式以及针对来自文件或流的媒体回放的较高等待时间解码模式)中的任一者中操作的通用解码工具,或它可以是适用于一种这样的解码模式的专用解码工具。视频解码器系统(500)可以被实现为操作系统模块的部分、应用库的部分、独立的应用的部分或使用专用的硬件。总体上,视频解码器系统(500)从信道(510)接收经编码的数据并产生经重构的图片作为针对输出目的地(590)的输出。接收到的经编码的数据可包括使用本文中描述的一个或多个创新来编码的内容。
解码器系统(500)包括信道(510),该信道(510)可表示存储、通信连接或针对作为输入的经编码数据的另一信道。信道(510)产生已经被信道编码的经编码的数据。信道解码器(520)可以处理经编码的数据。例如,信道解码器(520)(例如根据诸如ITU-T H.222.0|ISO/IEC 13818-1的媒体程序流或传输流格式,或诸如IETF RFC 3550的因特网实时传输协议格式)去分组化和/或去复用已被组织以供作为媒体流来传输或存储的数据,在这种情况中,信道解码器(520)可以解析所添加的作为媒体传输流的句法的一部分的句法元素。或者,信道解码器(520)(例如根据诸如ISO/IEC 14496-12的媒体容器格式)来将已被组织为供作为文件来存储的经编码的视频数据分开,在这种情况中,信道解码器(520)可以解析所添加的作为媒体存储文件的句法的一部分的句法元素。或者,更一般地,信道解码器(520)可以实现一个或多个媒体系统去复用协议或传输协议,在这种情况中,信道解码器(520)可以解析所添加的作为(诸)协议的句法的一部分的句法元素。信道(510)或信道解码器(520)还可以包括例如用于FEC解码和模拟信号解调的其它元素(未示出)。
从信道解码器(520)输出的经编码的数据(521)被存储在临时经编码数据区域(530)中,直到已经接收到足够数量的这样的数据。经编码的数据(521)包括经编码的图片(531)和MMCO/RPS信息(532)。在经编码数据区域(530)中的经编码的数据(521)包含一个或多个图片的经编码的数据作为基本经编码视频位流的句法的一部分。在经编码数据区域(530)中的经编码数据(521)还可包括与经编码的视频数据相关的媒体元数据(例如作为一个或多个SEI消息或VUI消息中的一个或多个参数)。
一般来说,经编码数据区域(530)临时存储经编码的数据(521),直到这样的经编码的数据(521)被视频解码器(550)使用。此时,经编码的图片(531)和MMCO/RPS信息(532)的经编码的数据被从经编码数据区域(530)传送到视频解码器(550)。随着解码继续,新的经编码数据被添加到经编码数据区域(530)并且保留在经编码数据区域(530)中的最旧的经编码数据被传输到视频解码器(550)。
视频解码器(550)解码经编码图片(531)以生成对应的经解码图片(551)。如图6所示,视频解码器(550)接收经编码的图片(531)作为输入以作为经编码视频位流(605)的一部分,并且视频解码器(550)产生相应的经解码图片(551)作为输出以作为经重构的视频(695)。作为该解码的一部分,在一些情况下,视频解码器(550)使用用调色板模式对经逸出编码的像素的稳健解码。
一般地,视频解码器(550)包括执行诸如熵解码、逆量化、逆频率变换、运动补偿、图片内预测、调色板模式解码和滤波之类的解码任务的多个解码模块。解码器(550)的许多组件被用于图片内解码和图片间解码这两者。由那些组件执行的确切操作可取决于正被解压缩的信息的类型而变化。经编码的视频位流的格式(605)可以是Windows媒体视频格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG-2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263、H.264、H.265)、或VPx格式、或其它格式的变型或扩展。
图片可被组织成相同尺寸或不同尺寸的多个小块。一个图片还可以被组织成一个或多个片。片或小块的内容可被进一步组织成块或其它样本值集。块可以在不同的阶段被进一步细分。例如,图片可以被划分成64x64块、32x32块或16x16块,这些块可进而被划分成更小的样本值块。在例如针对H.264/AVC标准的各解码实现中,图片被划分成各宏块和块。在例如针对H.265/HEVC标准的解码实现中,图片被分割成各CTU(CTB)、CU(CB)、PU(PB)和TU(TB)。
参考图6,缓冲器在经编码的视频位流(605)中接收经编码的数据,并使得接收到的经编码数据可用于解析器/熵解码器(610)。解析器/熵解码器(610)通常应用在编码器(340)中执行的熵编码的逆对经熵编码的数据进行熵解码(例如其中二值化使用指数-Golomb或Golomb-Rice的上下文自适应二进制算术解码)。作为解析和熵解码的结果,解析器/熵解码器(610)产生通用控制数据(622)、经量化的变换系数数据(632)(或者,对于调色板模式的逸出模式而言,为经量化的样本值)、帧内预测数据(642)、运动数据(652)、调色板模式数据(682)以及滤波器控制数据(662)。单元的调色板模式数据(682)包括指示该单元的调色板(其可相关于预测的调色板来编码)以及该单元的索引值(索引图)的信息。
通用解码控件(620)接收通用控制数据(622)。例如,通用控制数据(622)包括指示针对某单元的图片内编码是使用调色板编码模式还是空间预测(例如,每个经图片内预测的单元一个标志值)的信息。通用解码控件(620)将控制信号(未示出)提供给其它模块(例如缩放器/逆变换器(635)、图片内预测器(645)、运动补偿器(655)、调色板模式解码器(685)、以及帧内/帧间切换)以设置和改变解码期间的解码参数。
参考图5,在适当时,当执行其解码处理时,视频解码器(550)可将一个或多个先前解码的图片(569)用作图片间预测的参考图片。视频解码器(550)从经解码图片临时存储器存储区域(560)中读取这样的先前解码的图片(569),经解码图片临时存储器存储区域是解码图片缓冲器(670)的示例。参考图6,如果当前图片是使用图片间预测来预测的,则运动补偿器(655)接收运动数据(652),诸如MV数据、参考图片选择数据、以及合并模式索引值。运动补偿器(655)将MV应用于来自经解码图片缓冲器(670)的(诸)经重构的参考图片。运动补偿器(655)产生针对当前图片中的帧间编码块的运动补偿的预测。
在视频解码器(550)的分开的路径中,图片内预测器(645)接收帧内预测数据(642),诸如指示所使用的预测模式/方向的信息。对于帧内空间内预测,图片内预测器(645)根据预测模式/方向使用当前图片的重构(638)的值,从当前图片的相邻的、先前重构的样本值中空间地预测当前图片的当前块的样本值。或者,对于帧内块复制模式,图片内预测器(545)使用依据当前块的位移(块向量)指示的参考块的先前重构的样本值来预测当前块的样本值。
对于调色板解码模式,调色板模式解码器(685)接收调色板模式数据(682),诸如表示调色板和索引值的信息。调色板模式解码器(685)使用表示某单元(例如CU)的至少一些像素的调色板。调色板将索引值映射到在该单元中使用的对应的基础色彩。在解码期间,对于该单元中的各像素,来自调色板的索引值被这些像素的适当基础色彩取代。该单元中的经逸出编码的像素可使用该经逸出编码的像素的逸出代码(调色板中的特殊索引值)和(诸)经量化的样本值来解码,经量化的样本值如以下所描述的那样重构。调色板可基于信号化在位流中的调色板模式数据(682)逐单元地改变。
对于非调色板模式,帧内/帧间切换选择运动补偿预测或图片内预测的值以供用作针对给定块的预测(658)。例如,当H.265/HEVC句法被遵循时,可以基于为图片中的CU编码的句法元素来控制帧内/帧间切换,该图片可以包含帧内预测的CU和帧间预测的CU。当残量值已经被编码/信号化时,视频解码器(550)将预测(658)与重构的残量值组合以产生来自视频信号的内容的重构(638)。当残量值尚未被编码/信号化时,视频解码器(550)将预测(658)的值用作重构(638)。在调色板模式中,视频编码器(550)跳过残量解码操作,但可对已用逸出模式编码的像素的样本值进行逆量化。
对于非调色板模式,视频解码器(550)还重构预测残量值。为了在残量值已被编码/信号化时重构残量,缩放器/逆变换器(635)接收并处理经量化的变换系数数据(632)。在缩放器/逆变换器(635)中,缩放器/逆量化器对经量化的变换系数执行逆缩放和逆量化。缩放器/逆变换器(635)基于位流中的句法元素为图片、小块、片和/或视频的其它部分设置QP值。逆频率变换器执行逆频率变换,从而产生经重构的预测残量值或样本值的块。例如,逆频率变换器将逆块变换应用到频率变换系数,从而产生样本值数据或预测残量数据。逆频率变换可以是逆DCT、其整数近似、或另一种类型的逆频率变换(例如逆离散正弦变换或其整数近似)。如果频率变换在编码期间被跳过,则逆频率变换也被跳过。在这种情况下,缩放器/逆量化器可对预测残量数据(或样本值数据)的块执行逆缩放和逆量化,从而产生经重构的值。视频解码器(550)将经重构的预测残量值于预测(658)的预测值组合,从而产生重构(638)的值。
对于调色板模式,为了重构任何经逸出编码的像素,在缩放器/逆变换器(635)中,缩放器/逆量化器对用逸出模式编码的像素的任何经量化样本值执行逆缩放和逆量化。经重构的样本值提供重构(638)的值,因为在调色板模式中预测(658)为空。
对于图片内预测,重构(638)的值可以被馈送回图片内预测器(645)。对于图片间预测,重构(638)的值可以被进一步滤波。在合并器/(诸)滤波器(665)中,视频解码器(550)将来自不同小块的内容合并到图片的经重构版本中。视频解码器(550)根据滤波器控制数据(662)和滤波自适应规则来执行去块滤波和SAO滤波,以便自适应地平滑各图片中的各边界上的间断。可替换地或另外地应用其它滤波(例如去振铃滤波或ALF;未示出)。小块边界可以被选择性地滤波或根本不被滤波,这取决于视频解码器(550)的设置或经编码的位流数据内的句法元素。经解码图片缓冲器(670)缓冲经重构的当前图片以供在后续的运动补偿预测中使用。
视频解码器(550)还可包括后处理滤波器。后处理滤波器可包括去块滤波、去振铃滤波、自适应维纳滤波、膜颗粒再现滤波、SAO滤波或另一种类的滤波。尽管“内环路”滤波是在运动补偿环路中对图片的经重构的样本值执行的,并因此影响参考图片的样本值,但后处理滤波器是在经重构的样本值被输出以供显示之前在运动补偿环路外部被应用于经重构的样本值的。
参考图5,经解码图片临时存储器存储区域(560)包括多个图片缓冲器存储区域(561,562,…,56n)。经解码的图片存储区域(560)是经解码的图片缓冲器(670)的一个示例。解码器(550)使用MMCO/PS信息(532)来标识该解码器可将经解码的图片(551)存储在其中的图片缓冲器(561、562等)。解码器(550)将经解码的图片(551)存储在那个图片缓冲器中。
输出序列发生器(580)标识按输出次序将产生的下一图片何时可在经编码图片存储区域(560)中获得。当将按输出次序产生的下一图片(581)可在经解码图片存储区域(560)中获得时,输出序列发生器(580)读取该下一图片并将其输出到输出目的地(590)(例如显示器)。一般来说,输出序列发生器(580)将图片从经解码图片存储区域(560)中输出的次序可以与解码器(550)解码这些图片的次序不同。
取决于实现和所希望的解压缩的类型,视频解码器系统(500)和/或视频解码器(550)的模块可以被添加、省略、拆分成多个模块、与其他模块组合和/或替换为类似的模块。在替换实施例中,具有不同模块和/或其他模块配置的解码器系统或解码器执行所描述的技术中的一个或多个。解码器系统的具体实施例通常使用视频解码器系统(500)的变型或补充版本。视频解码器的具体实施例通常使用视频解码器(550)的变型或补充版本。所示出的在视频解码器系统(500)和视频解码器(550)内的各模块之间的关系指示信息分别在视频解码器系统(500)和视频解码器(550)中的一般流动;为简单起见,未示出其他关系。
V.用调色板模式对经逸出编码的像素进行稳健编码/解码。
本章节呈现用于用调色板模式对经逸出编码的像素进行稳健编码和解码的方法。在各示例实现中,这些方法避免在解析经逸出编码的像素时对单元级QP值的依赖性,这可使得编码/解码对数据丢失更稳健。
A.调色板模式的介绍。
在调色板模式中,媒体编码器(诸如视频编码器或图像编码器)使用表示基础色彩的索引值来对像素进行编码。通常,这些索引值中的每一者与像素中的一不同值(“基础色彩”)相关联。在编码期间,用对应的索引值来取代像素。媒体编码器编码并信号化将索引值映射到相应的基础色彩的调色板以及表示像素的索引值的布置(“索引图”)。媒体解码器(诸如视频解码器或图像解码器)接收并解码将索引值映射到相应基础色彩的调色板。使用该调色板,媒体解码器用像素的相应基础色彩来取代索引图中的索引值。
图7示出单元(710)的样本值块。单元(730)为4x4单元。更一般地,对于二维布置,单元(710)可具有尺寸i x j,imin≤i≤imax且jmin≤j≤jmax,其中i和j可具有相等的值或具有不同的值。值imin、imax、jmin和jmax取决于实现。例如,对于针对H.265/HEVC编码/解码的一些实现,imin=jmin=8且imax=jmax=最大允许变换尺寸。由此,单元可具有除4x4以外的尺寸(例如,8x8、16x16或32x32)。或者,媒体解码器可创建针对片、小块、完整图片、图片组、或视频序列的像素的调色板。
在图7中,样本值表示屏幕捕捉内容的强度或亮度值,并且样本值包括统一值和强模式的部分。单元(710)具有三个针对不同色彩分量(例如,R、G和B分量,或Y、U和V分量)的样本值块。替换地,单元(710)可以是单色的,从而具有单个样本值块。在图7中,单元(710)包括四个不同的色彩:(200,120,93)、(168,101,28)、(127,127,127)和(41,41,41)。
媒体编码器创建将索引值分配给对应的基础色彩的调色板(720)。在图7的示例中,索引值0被分配给色彩(200,120,93),索引值1被分配给色彩(168,101,28),并以此类推。媒体编码器可根据其在单元中出现的可能性来将索引值分配给各基础色彩,使得较常见的样本值具有较低的索引值,且较不常见的色彩具有较高的索引值,这通常在用较少的位来表示较低的索引值时导致较高效的编码。替换地,媒体编码器可根据当单元被扫描时的出现次序来将索引值分配给各基础色彩,其依赖于后面的进程(诸如预测)来利用索引图的索引值中的冗余性。调色板(720)可被实现为查找表或其它数据结构。
图7示出索引图(730),其中像素已用对应的索引值取代。用索引值取代像素的过程是无损的。(替换地,在有损压缩变型中,如果精确匹配不可用,则像素可用表示最靠近该像素的基础色彩的索引值来取代。这可减小调色板(720)的尺寸但是也引入了可感知的失真。)逸出编码是用于处理并非用索引值来表示的像素的另一方法。
媒体编码器编码并输出调色板(720)以及具有表示单元(710)的像素的索引值的索引图(730)。作为编码的一部分,索引图(730)的索引值可用进一步的映射操作、预测和/或熵编码来处理。调色板(720)也可用预测和/或熵编码来进一步处理。
在解码期间,媒体解码器接收并解码调色板(720)和用于索引图(730)的数据。作为解码的一部分,索引图(730)的索引值可用熵解码、映射操作和/或预测来处理。同样,调色板(720)可用熵解码和/或预测来处理。对于调色板模式解码,媒体解码器随后使用调色板(720)来逆转映射过程,如在图7中所示的。
在一些情况下,单元包括稀有色彩。例如,稀有色彩可在16x16单元或32x32单元的成百的像素之中仅出现一或二次。但是,稀有色彩可被表示在调色板中,信号化稀有色彩的调色板数据的成本可超过益处。取代在调色板中表示稀有色彩,媒体编码器可用逸出模式对具有稀有色彩的像素进行编码。对于逸出模式,调色板包括将像素标记为是用逸出模式来编码的特殊索引值。随后,经逸出编码的像素的样本值可被量化并熵编码。媒体编码器不需要用逸出模式对稀有色彩进行编码(即,媒体编码器可在调色板中表示单元的所有色彩),但是使用逸出模式可在某些情况下改善编码效率。针对色彩是否有资格成为稀有色彩的阈值取决于实现(例如,在单元中小于x次出现,其中x为1、2、3或某个其他阈值;或者小于单元中的像素的y%,其中y为0.5、1.0、2.0或某个其他阈值)。
图8a示出用调色板模式的逸出模式来对样本值进行编码的示例。图8b示出用调色板模式的逸出模式来对样本值进行解码的示例。一般来说,以上针对图7的示例描述的选项也适用于图8a和8b的示例(例如,单元尺寸、样本值块的数目、调色板的组织、索引值在调色板中的排序、对调色板和索引图的编码/解码、映射的有损变型)。
图8a示出单元(810)的原始样本值块。在图8a中,单元(810)包括六个不同的色彩:(200,120,93)、(168,101,28)、(127,127,127)、(41,41,41)、(100,80,120)和(155,91,200)。
媒体编码器创建将索引值分配给四种基础色彩(它们是四种最常见的色彩)的调色板(820)。在图8a的示例中,索引值0被分配给色彩(200,120,93),索引值1被分配给色彩(168,101,28),并以此类推。两个色彩–(100,80,120)和(155,91,200)–没有用索引值来表示。相反,具有这两个稀有色彩之一的任何像素都被逸出编码。调色板(820)包括用于标记经逸出编码的像素的特殊索引值。在各示例实现中,特殊索引值是调色板(820)中的最后一个索引值,这可改善总编码效率,因为其他索引值被认定为更常见。在图8a和8b中,特殊索引值为索引值4。
图8a示出索引图(830),其中像素已用对应的索引值取代。两个像素已用特殊索引值取代,从而将这两个像素标记为经逸出编码的像素。媒体编码器也为经逸出编码的像素产生经量化的样本值的列表(840)。用于量化的QP可以是例如片级QP,如以下所描述的。在图8a中,像素(100,80,120)和(155,91,200)的样本值是使用为12的量化步长尺寸来量化的,其中量化步长尺寸取决于QP。经量化的样本值为8(来自100)、7(来自80)、10(来自120)、13(来自155)、8(来自91)和17(来自200)。媒体编码器还例如使用CABAC对经量化的样本值进行熵编码。
图8b示出单元(810)的样本值的经重构的块以及来自图8a的调色板(820)、索引图(830)和经量化的样本值的列表(840)。大多数像素是通过使用调色板(820)进行逆映射来重构的。然而,经逸出编码的像素的样本值是使用熵解码和逆量化来重构的。对于经逸出编码的像素,经重构的样本值可准确地或近似地匹配原始样本值。如图8b所示,量化可为经逸出编码的像素的一些样本值引入损失。
在调色板模式的逸出模式用于H.265/HEVC编码和解码的一些实现中,在量化经逸出编码的像素的样本值时使用的QP是用于包括经逸出编码的像素的编码单元(“CU”)的QP。该QP值可使用CU级QP偏移值在逐CU的基础上改变。CU级QP影响熵编码和解码。具体地,在编码期间,当经量化的样本值在进行上下文自适应二进制算术编码之前被转换为二进制值串时,该串中的二进制值的数目取决于经量化的样本值的可能的最大值。类似地,在解码期间,结合对经量化的样本值的上下文自适应二进制算术解码使用的二进制值串的集合取决于经量化的样本值的可能的最大值。该最大值进而取决于样本值的样本深度和用于量化的QP(在文本中为CU级QP)。编码器和解码器从经量化的样本值的可能的最大值中确定用于表示经逸出编码的像素的经量化的样本值的二进制值的数目。
由此,在解码期间,经逸出编码的像素的经熵编码、经量化的样本值的正确解析取决于解码器首先重构CU的CU级QP。解码器在确定对于经量化的样本值而言可能的二进制值串的集合时并且因此在确定要从位流读出多少二进制值时使用CU级QP。经逸出编码的像素的经量化的样本值的解码和CU级QP值之间的此解析依赖性可能是有问题的。具体地,在存在传输错误时,该解析依赖性可导致严重的质量降级。
相反,在H.265/HEVC编码/解码的一些实现中,在经量化的变换系数的解码和CU级QP值之间不存在解析依赖性。甚至在QP值可在逐CU的基础上改变或在CU的一个块到另一块改变时,经量化变换系数的编码/解码独立于QP值。在从位流解析/熵解码经量化的变换系数时,不需要重构CU级QP值。因此,不存在对CU级QP值的解析依赖性。
B.用于用调色板模式对经逸出编码的像素进行稳健编码/解码的通用技术。
图9示出用于编码(包括用调色板模式的逸出模式对像素进行稳健编码)的通用技术(900)。媒体编码器(诸如参考图3、4a和4b描述的视频编码器或其他媒体编码器)执行技术(900)。
媒体编码器接收(910)当前图片。媒体编码器随后在逐单元的基础上对当前图片进行编码。当前图片的单元可以是CU、宏块、或某种其他类型的单元。作为对当前图片进行编码的一部分,媒体编码器对当前图片的当前单元进行编码(920)。媒体编码器检查(930)是否要对当前图片的下一单元继续,并且如果如此,则通过(与当前单元一样)对下一单元进行编码来继续。在对当前图片的所有单元进行编码后,媒体编码器检查(940)是否要对下一图片(例如,视频序列中的下一图片)继续。如果如此,则媒体编码器通过接收下一图片(与当前图片一样)来继续。
在编码过程期间,对于至少一个单元,编码器用调色板模式对该单元进行编码,并且作为调色板模式编码的一部分,独立于该单元的任何单元级QP用调色板模式的逸出模式对该单元的样本值进行编码。参考图11-18在接着的四个章节中详述用于用调色板模式的逸出模式对样本值进行编码的各示例方法。当前图片的其他单元可在没有经逸出编码的像素的情况下用调色板模式来编码,和/或用非调色板模式来编码。
媒体编码器可选择性地启用/禁用经逸出编码的像素的样本值是否独立于任何单元级QP被编码。例如,片头部、PPS、SPS或其他句法结构中的标志指示用调色板模式的逸出模式编码的像素的样本值是否是独立于任何单元级QP来编码的。
图10示出用于进行解码(包括用调色板模式的逸出模式对像素进行稳健解码)的通用技术(1000)。媒体解码器(诸如参考图5和6描述的视频解码器或其他媒体解码器)执行技术(1000)。
媒体解码器接收(1010)当前图片的经编码的数据。媒体解码器随后在逐单元的基础上对当前图片进行解码。当前图片的单元可以是CU、宏块、或某种其他类型的单元。作为对当前图片进行解码的一部分,媒体解码器对当前图片的当前单元进行解码(1020)。媒体解码器检查(1030)是否要针对当前图片的下一单元继续,并且如果如此,则通过(与当前单元一样)对下一单元进行解码来继续。在对当前图片的所有单元进行解码后,媒体解码器检查(1040)是否针对下一图片(例如,视频序列中的下一图片)继续。如果如此,则媒体解码器通过接收下一图片的经编码的数据(与当前图片一样)来继续。
在解码过程期间,对于至少一个单元,解码器用调色板模式对该单元进行解码,并且作为调色板模式解码的一部分,用调色板模式的逸出模式对该单元的样本值进行解码,而没有对该单元的单元级QP的任何解析依赖性。参考图11-18在接着的四个章节中详述用于用调色板模式的逸出模式对样本值进行解码的各示例方法。当前图片的其他单元可在没有经逸出编码的像素的情况下用调色板模式来解码,和/或用非调色板模式来解码。
媒体解码器可选择性地启用/禁用经逸出编码的像素的样本值是否在没有对单元级QP的任何解析依赖性的情况下被解码。例如,片头部、PPS、SPS或其他句法结构中的标志指示用调色板模式的逸出模式编码的像素的样本值是否是在没有对单元级QP的解析依赖性的情况下解码的。
C.第一示例方法-使用片级QP或其他“恒定”QP。
图11示出用于使用取决于片级QP的二值化过程用调色板模式对经逸出编码的像素的样本值进行编码的示例技术(1100)。示例技术(1100)是图9中示出的通用技术(900)的编码(920)阶段中的处理的示例。在第一示例方法中,当前图片的片包括当前单元(例如,当前CU)。
媒体编码器基于该片的片级QP使用量化步长尺寸来量化(1110)样本值。例如,该片级QP是使用当前图片的图片级QP以及片的片级QP来设置的。替换地,片级QP还取决于适用于片中的用调色板模式的逸出模式编码的任何样本值的QP偏移,如参考图13所描述的。经逸出编码的像素的样本值的QP偏移可取决于调色板模式是否被启用被有条件地信号化在片的头部(即,如果调色板模式被启用,则QP偏移存在,并且如果调色板模式被禁用,则QP偏移不存在)。对于单元的不同块,片级QP也可变化,这取决于色彩分量,其中不同的色彩分量具有在图片级和/或片级信号化的不同QP偏移。在示例实现中,位流句法不准许在有经逸出编码的像素的情况下用调色板模式来编码单元的单元级QP(例如,在有经逸出编码的像素的情况下,CU的CU级QP都不是以调色板模式来编码的)。
媒体编码器将经量化的样本值映射(1120)到含一个或多个二进制值的串。该串是取决于对经量化的样本值而言可能的最大值的二值化的部分,该最大值进而取决于片级QP。以下描述二值化的示例。替换地,媒体编码器使用一些其他形式的二值化。媒体编码器对含(诸)二进制值的串进行熵编码(1130)。
图12示出用于使用取决于片级QP的二值化过程用调色板模式对经逸出编码的像素的样本值进行解码的示例技术(1200)。示例技术(1200)是图10中示出的通用技术(1000)的解码(1020)阶段中的处理的示例。在第一示例方法中,当前图片的片包括当前单元(例如,当前CU)。
媒体解码器确定(1210)取决于对样本值的经量化的样本值而言可能的最大值的二值化。最大值取决于片的片级QP。例如,片级QP是使用当前图片的图片级QP以及片的片级QP来重构的。替换地,片级QP还取决于适用于片中的用调色板模式的逸出模式编码的任何样本值的QP偏移,如参考图13所描述的。经逸出编码的像素的样本值的QP偏移可取决于调色板模式是否被启用被有条件地信号化在片的头部(即,如果调色板模式被启用,则QP偏移存在,并且如果调色板模式被禁用,则QP偏移不存在)。对于单元的不同块,片级QP也可变化,这取决于色彩分量,其中不同的色彩分量具有信号化在图片级和/或片级的不同QP偏移。在示例实现中,位流句法不准许在有经逸出编码的像素的情况下用调色板模式来解码单元的单元级QP(例如,在有经逸出编码的像素的情况下,CU的CU级QP都不是用调色板模式来编码的)。
媒体解码器对经量化的样本值的含一个或多个二进制值的串进行熵解码(1220)。该熵解码使用该二值化。随后,媒体解码器使用片的片级QP对经量化的样本值进行逆量化(1230)。
在一些示例实现中,经逸出编码的像素是使用对片的各CU“恒定”的QP值来编码和解码的。该恒定QP是片级QP,其可取决于为片的各经逸出编码的像素信号化的片级QP偏移,但对该片的所有CU相同。由于经逸出编码的像素的QP对于该片的CU是固定的,在对经逸出编码的像素的样本值进行算术编码/解码时使用的串的二进制值的数目也是固定的。(串的二进制值的数目取决于样本深度和QP值,其指示经量化的样本值的最大可能值。)由此,当恒定的片级QP被使用时,不存在对经逸出编码的像素的样本值的CU级QP值的解析依赖性。同样,当经逸出编码的像素使用恒定的片级QP时,在调色板模式中经逸出编码的像素的CU级QP偏移不需要被信号化在位流中。
图13示出具有用于在调色板模式中信号化经逸出编码的像素的片级QP偏移的句法元素的示例句法结构(1300)。具体地,图13示出用于针对H.265/HEVC标准的扩展的编码和解码实现的片段头部的句法结构。在句法结构(1300)中,句法元素palette_escape_pixel_qp_delta(调色板_逸出_像素_qb_增量)、palette_escape_pixel_cb_qp_offset(调色板_逸出_像素_cb_qb_偏移)和palette_escape_pixel_cr_qp_offset(调色板_逸出_像素_cr_qb_偏移)有条件的存在。如果调色板模式被启用(即,palette_mode_enabled_flag(调色板_模式_被启用_标志)的值为1),则句法元素palette_escape_pixel_qp_delta存在,并且句法元素palette_escape_pixel_cb_qp_offset和palette_escape_pixel_cr_qp_offset也可存在(如果色度阵列类型不是单色的)。
句法元素palette_escape_pixel_qp_delta指定片中用于经逸出编码的像素的亮度样本值(或其他主要色彩分量样本值)的QP值(“EscQpY”)。当不存在时,该句法元素的值被推断等于0。EscQpY被设为:
EscQpY=SliceQpY+palette_escape_pixel_qp_delta,
其中EscQpY的值被约束为在-QpBdOffsetY到+51的范围内,并且QpBdOffsetY被定义在JCTVC-T1005-v2中,其指定H.265/HEVC标准的扩展。
句法元素palette_escape_pixel_cb_qp_offset指定在确定片中的经逸出编码的像素的cb色彩分量样本值(或其他次要色彩分量样本值)所使用的QP值(“EscQpCb”)时要与pps_cb_qp_offset(pps_cb_qb_偏移)的值相加的差。palette_escape_pixel_cb_qp_offset的值被约束在-12到+12的范围内,其为包括性的。当不存在时,该句法元素被推断为等于0。pps_cb_qp_offset+palette_escape_pixel_cb_qp_offset的值被约束为处于-12到+12的范围内,其为包括性的。EscQpCb被设为:
EscQpCb=Clip3(-QpBdOffsetC,57,EscQpY+pps_cb_qp_offset+palette_escape_pixel_cb_qp_offset),
其中,Clip3(a,b,c)是将c限幅(clip)为处于a和b的范围内的函数,并且其中QpBdOffsetC和pps_cb_qp_offset被定义在JCTVC-T1005-v2中。
类似地,句法元素palette_escape_pixel_cr_qp_offset指定在确定片中的经逸出编码的像素的cr色彩分量样本值(或其他次要色彩分量样本值)所使用的QP值(“EscQpCr”)时要与pps_cr_qp_offset的值相加的差。palette_escape_pixel_cr_qp_offset的值被约束在-12到+12的范围内,其为包括性的。当不存在时,该句法元素被推断为等于0。pps_cr_qp_offset+palette_escape_pixel_cr_qp_offset的值被约束为处于-12到+12的范围内,其为包括性的。EscQpCr被设为:
EscQpCr=Clip3(-QpBdOffsetC,57,EscQpY+pps_cr_qp_offset+palette_escape_pixel_cr_qp_offset),
其中pps_cr_qp_offset被定义在JCTVC-T1005-v2中。
在解码期间,对于不同的色彩分量,用于经逸出编码的像素的经量化的样本值的逆量化的片级QP(“qP”)取决于色彩分量的索引cIdx被定义为:
-如果cIdx等于0,qP=max(0,EscQpY);
-否则,如果cIdx等于1,qP=max(0,EscQpCb);以及
-否则(cIdx等于2),qP=max(0,EscQpCr)。
句法元素palette_escape_val(调色板_逸出_值)表示经逸出编码的像素的经量化的样本值。针对palette_escape_val的二值化过程如下前进。二值化过程接受色彩分量索引cIdx和标志cu_transquant_bypass_flag(cu_变换量化_绕过_标记)作为输入,其指示对于CU变换和量化是否被绕过。二值化过程产生针对palette_escape_val句法元素的二值化(可能的二进制值串的集合)作为输出。媒体解码器导出变量bitDepth(位深度)为:
bitDepth=(cIdx==0)?BitDepthY:BitDepthC,
其中BitDepthY(位深度Y)指示主要色彩分量的位深度,并且BitDepthC(位深度C)指示次要色彩分量的位深度。
如果cu_transquant_bypass_flag为真,则媒体解码器通过调用在JCTVC-T1005-v2的章节9.3.3.5中指定的固定长度二值化过程来导出palette_escape_val的二值化,其中输入参数被设为(1<<bitDepth)–1。
另一方面,如果cu_transquant_bypass_flag为假,则媒体解码器如下导出palette_escape_val的二值化。媒体解码器如下导出量化参数qP:
qP=(cIdx==0)?EscQpY:((cIdx==1)EscQpCb?EscQpCr)。
媒体解码器如下导出变量bdShift(bd移位):
bdShift=14+qP/6。
列表quantScale[](量化比例[])被指定为quantScale[k]={26214,23302,20560,18396,16384,14564},k=0…5。媒体解码器如下导出经截短的二进制(“TB”)二值化过程的最大参数cMax:
cMax=(((1<<bitDepth)-1)*quantScale[qP%6]+(1<<(bdShift-1)))>>bdShift。
最后,为了产生palette_escape_value句法元素的二值化,媒体解码器调用在JCTVC-T1005-v2的章节9.3.3.6中指定的TB二值化过程,其中cMax作为输入。
在示例实现中,对经逸出编码的像素的经量化的样本值的编码/解码使用片级QP。替换地,取代使用片级QP,调色板模式的逸出模式使用另一QP值,出于对片的各单元进行编码/解码的目的,该另一QP值是“恒定的”。例如,该恒定的QP是图片级QP(其可在各色彩分量之间变化)、因小块而异的QP(其可在各色彩分量之间变化)或另一级别的QP。
在示例实现中,经逸出编码的像素的样本值总是使用片级QP或其他恒定QP来编码和解码。替换地,经逸出编码的像素的样本值可使用恒定QP或使用CU级QP来编码/解码,这取决于设置。例如,(在片头部、PPS、SPS或其他句法结构中的)高级标志控制经逸出编码的像素的样本值是使用恒定QP还是CU级QP来编码/解码的。该标志进而控制位流中存在还是不存在经逸出编码的像素的(诸)片级QP偏移,并控制该位流中存在还是不存在经逸出编码的像素的(诸)CU级QP偏移。
D.第二示例方法-根据样本深度的二值化。
图14示出用于使用取决于样本值的样本深度(即,每样本值的位数)的二值化过程用调色板模式对经逸出编码的像素的样本值进行编码的示例技术(1400)。示例技术(1400)是图9中示出的通用技术(900)的编码(920)阶段中的处理的示例。示例技术(1400)是无损的—经逸出编码的像素的样本值没有被量化。
媒体编码器将样本值映射(1410)到含一个或多个二进制值的串。该串是取决于样本值的样本深度的固定长度二值化的一部分。以下描述了固定长度二值化的示例。替换地,媒体编码器使用一些其他形式的二值化。媒体编码器对含(诸)二进制的串进行熵编码(1420)。
图15示出用于使用取决于样本值的样本深度(即,每样本值的位数)的二值化过程用调色板模式对经逸出编码的像素的样本值进行解码的示例技术(1500)。示例技术(1500)是图10中示出的通用技术(1000)的解码(1020)阶段中的处理的示例。示例技术(1500)是无损过程的一部分-经逸出编码的像素的样本值没有被逆量化。
媒体解码器确定(1510)取决于样本值的样本深度的固定长度二值化。以下描述固定长度二值化的示例。媒体解码器对含样本值的一个或多个二进制值的串进行熵解码(1220)。该熵解码使用固定长度二值化。
在一些示例实现中,变量bitBepth指示同一值的样本深度。媒体解码器导出变量bitDepth为:
bitDepth=(cIdx==0)?BitDepthY:BitDepthC,
其中BitDepthY指示主要色彩分量的位深度,并且BitDepthC指示次要色彩分量的位深度。媒体解码器通过调用在JCTVC-T1005-v2的章节9.3.3.5中指定的固定长度二值化过程来导出(句法元素palette_escape_val的)样本值的二值化,其中输入参数被设为(1<<bitDepth)–1。
由于样本深度通常在高级别处被定义(例如,针对视频序列),二值化过程的输入是固定的。替换地,经逸出编码的像素的样本值是使用取决于另一固定规则的二值化过程来编码/解码的。
E.第三和第四示例方法-k阶指数-Golomb二值化
图16示出用于在调色板模式中使用k阶指数-Golomb二值化过程对经逸出编码的像素的样本值进行编码的示例技术(1600)。示例技术(1600)是图9中示出的通用技术(900)的编码(920)阶段中的处理的示例。
媒体编码器基于片的片级QP、单元的单元级QP或其他QP使用量化步长尺寸来量化(1610)样本值。例如,QP是使用当前图片的图片级QP、片的片级QP偏移和单元的单元级QP偏移来设置的。(即使在单元级QP偏移不影响解析的情况下(如在以下描述的独立于QP的变型中),单元级QP偏移也可在设置用于量化的因单元而异的QP时被使用。)对于单元的不同块,QP也可变化,这取决于色彩分量,例如其中不同的色彩分量具有在图片级和/或片级信号化的不同QP偏移。
媒体编码器将经量化的样本值映射(1620)到含一个或多个二进制值的串。该串是取决于输入值k的k阶指数-Golomb二值化的一部分。以下描述了k阶指数-Golomb二值化的示例。替换地,媒体编码器使用一些其他形式的二值化。媒体编码器对含(诸)二进制的串进行熵编码(1630)。
图17示出用于在调色板模式中使用k阶指数-Golomb二值化过程对经逸出编码的像素的样本值进行解码的示例技术(1700)。示例技术(1700)是图10中示出的通用技术(1000)的解码(1020)阶段中的处理的示例。
媒体解码器确定(1710)取决于输入值k的k阶指数-Golomb二值化。媒体解码器对经量化的样本值的含一个或多个二进制值的串进行熵解码(1720)。该熵解码使用k阶指数-Golomb二值化。随后,媒体解码器基于片的片级QP、单元的单元级QP或其他QP使用量化步长尺寸来逆量化(1730)经量化的样本值。例如,QP是使用当前图片的图片级QP、片的片级QP偏移和/或单元的单元级QP偏移来重构的。(即使在单元级QP偏移不影响解析的情况下(如在以下描述的独立于QP的变型中),单元级QP偏移也可在设置用于量化的因单元而异的QP时被使用。)对于单元的不同块,QP也可变化,这取决于色彩分量,例如其中不同的色彩分量具有在图片级和/或片级信号化的不同QP偏移。
图18是示出用于k阶指数-Golomb二值化过程的示例技术的伪代码列表(1800)。k阶指数-Golomb二值化过程产生将每一可能值(如图18中示出的,symbolVal)与相应的二进制值串相关联的二值化。如图18所示,指定了在针对每一值symbolVal的二值化过程中产生的串。函数Abs(X)返回X的绝对值。对函数put(X)的每一次调用都在二进制串的结束处添加二进制值X,其中X等于0或1。
1.独立于QP的二值化过程。
在一些示例实现中,为该解码预定义用于k阶指数-Golomb二值化的k值。例如,为经逸出编码的像素的样本值的编码和解码预先确定或硬编码k的值。或者,k值由编码器设置,被信号化在片头部、PPS、SPS或其他句法结构中,并且由解码器用作k阶指数-Golomb二值化过程的输入。由于k值是预定义的,调色板模式中针对经逸出编码的像素的样本值的二值化过程是独立于QP的。
k的值取决于实现。一般来说,当大多数经量化的样本值为零或接近于零时,较小的k值(诸如为0或1)受到偏好。另一方面,当经量化的样本值在范围方面在各非零值之中更均匀地分布时,甚至在接近于零的值更常见的情况下,较大的k值(诸如,2、3或4)受到偏好。在一些示例实现中,k为3。
通过这种方法,针对palette_escape_val的二值化过程如下前进。二值化过程接受色彩分量索引cIdx和标志cu_transquant_bypass_flag作为输入,其指示对于CU变换和量化是否被绕过。二值化过程产生针对palette_escape_val句法元素的二值化(可能的二进制值串的集合)作为输出。媒体解码器导出变量bitDepth为:
bitDepth=(cIdx==0)?BitDepthY:BitDepthC,
其中BitDepthY指示主要色彩分量的位深度,并且BitDepthC指示次要色彩分量的位深度。
如果cu_transquant_bypass_flag为真,则媒体解码器通过调用在JCTVC-T1005-v2的章节9.3.3.5中指定的固定长度二值化过程来导出palette_escape_val的二值化,其中输入参数被设为(1<<bitDepth)–1。
另一方面,如果cu_transquant_bypass_flag为假,媒体解码器如图18所示导出palette_escape_val的k阶指数-Golomb二进制,其中k等于3。
2.独立于QP的二值化过程。
在一些示例实现中,用于k阶指数-Golomb二值化的k值是在解码期间取决于QP值来导出的。例如,在当前单元是当前图片的片的一部分时,k值可至少部分地基于片的片级QP来设置。由此,k阶指数-Golomb二进制的阶是自适应的,这取决于片级QP。当QP为高时,由于大多数经量化的样本值被预期为处于相对较小的值范围中的零或接近于零,因此k值可被设为较低值(诸如0或1)。另一方面,当QP为低时,由于较多非零的经量化的样本值被预期,并且那些非零的经量化的样本值可分布在较大的值范围上,因此k值可被设为较高值(诸如,2、3或4)。
通过这种方法,针对palette_escape_val的二值化过程如下前进。二值化过程接受色彩分量索引cIdx和标志cu_transquant_bypass_flag作为输入,其指示对于CU变换和量化是否被绕过。二值化过程产生针对palette_escape_val句法元素的二值化(可能的二进制值串的集合)作为输出。媒体解码器导出变量bitDepth为:bitDepth=(cIdx==0)?BitDepthY:BitDepthC.
如果cu_transquant_bypass_flag为真,则媒体解码器通过调用在JCTVC-T1005-v2的章节9.3.3.5中指定的固定长度二值化过程来导出palette_escape_val的二值化,其中输入参数被设为(1<<bitDepth)–1。
另一方面,如果cu_transquant_bypass_flag为假,则媒体解码器如下导出palette_escape_val的二值化。媒体解码器如下导出量化参数qP:
如果cIdx==0,qP=SliceQpY
否则,如果cIdx==1,
qP=Clip3(-QpBdOffsetC,57,SliceQpY+pps_cb_qp_offset+slice_cb_qp_offset)
否则(cIdx==2),
qP=Clip3(-QpBdOffsetC,57,SliceQpY+pps_cr_qp_offset+slice_cr_qp_offset)
替换地,QP值qP以某一其它方式来设置。例如:
QpY=SliceQpY
qPiCb=Clip3(-QpBdOffsetC,57,QpY+pps_cb_qp_offset+slice_cb_qp_offset)
qPiCr=Clip3(-QpBdOffsetC,57,QpY+pps_cr_qp_offset+slice_cr_qp_offset)
如果ChromaArrayType等于1,则基于索引qPi分别等于qPiCb和qPiCr,变量qPCb和qPCr被设为等于如在JCTVC-T1005-v2的表8-10中指定的QpC的值。否则,基于索引qPi分别等于qPiCb和qPiCr,变量qPCb和qPCr被设为等于Min(qPi,51)。此后:
Qp′Y=QpY+QpBdOffsetY
Qp′Cb=qPCb+QpBdOffsetC
Qp′Cr=qPCr+QpBdOffsetC
最后,取决于色彩分量设置样本值的适当QP。如果cIdx等于0,qP被设为Qp′Y。如果cIdx等于1,qP被设为Qp′Cb。如果cIdx等于2,qP被设为Qp′Cr。
媒体解码器如下导出变量bdShift:
bdShift=14+qP/6.
列表quantScale[]被指定为quantScale[k]={26214,23302,20560,18396,16384,14564},k=0…5。媒体解码器如下导出经截短的二进制(“TB”)二值化过程的最大参数cMax:
cMax=(((1<<bitDepth)-1)*quantScale[qP%6]+(1<<(bdShift-1)))>>bdShift。
由此,cMax指示在调色板模式中经逸出编码的像素的(给定色彩分量的)经量化的样本值的最大可能值。
随后,媒体解码器根据以下伪代码基于cMax确定k(“order(阶)”)的值。
order=0;
while(cMax>1){order++;cMax>>=1;}
order的值可进一步通过添加固定偏移(诸如,0、1、2、-1、-2等)来修改,其中order被限幅为大于或等于0。替换地,为了计算趋于稍微较高的order的值,媒体解码器根据以下伪代码基于cMax确定k(阶)的值:
order=0;
while(cMax>0){order++;cMax>>=1;}
最后,媒体解码器如图18所示导出palette_escape_val的k阶指数-Golomb二值化,其中k等于如上导出的值“order(阶)”。
F.其他示例方法-组合。
前述方法可被组合使用。例如,媒体编码器确定单元是用无损方式还是有损方式编码的。如果单元是用无损方式编码的,则媒体编码器使用在章节V.D中描述的方法。否则(单元是用有损方式编码的),媒体编码器使用在章节V.E中描述的方法之一。相应的媒体解码器确定单元已被用无损方式还是有损方式编码。如果单元已被用无损方式编码,则媒体解码器使用在章节V.D中描述的方法。否则(单元已被用有损方式编码),媒体编码器使用在章节V.E中描述的方法之一。
鉴于可应用所公开的本发明的原理的许多可能的实施例,应当认识到,所示实施例仅是本发明的优选示例,并且不应认为是限制本发明的范围。相反,本发明的范围由后续的权利要求来界定。我们要求作为我们的发明保护落入这些权利要求范围和精神内的所有内容。