技术领域
[0002] 本申请涉及视频编码和解码,并且特别涉及用于在比特流中使用和提供补充增强信息的工具和技术。
相关背景技术
[0003] 工程师使用压缩(其也被称作源编解码或源编码)来降低数字视频的比特率。压缩通过将信息转换成较低比特率形式来降低存储和传送视频信息的成本。解压缩(其也被称作解码)从压缩形式重建原始信息的版本。“编解码器”是编码器/解码器系统。
[0004] 在过去的二十年中采用了多种视频编解码器标准,其中包括H.261、H.262(MPEG-2或ISO/IEC 13818-2)、H.263和H.264(AVC或ISO/IEC 14496-10)标准,以及MPEG-1(ISO/IEC 11172-2)、MPEG-4视觉(ISO/IEC 14496-2)和SMPTE 421M(VC-1)标准。最近,正在开发HEVC(H.265)标准。视频编解码器标准通常定义用于已编码视频比特流的语法的选项,其中详细描述当在编码和解码中使用特定特征时比特流中的参数。在许多情况下,视频编解码器标准还提供关于解码器应当实施以在解码中获得正确结果的解码操作的细节。
具体实施方式
[0014] 本具体实施方式给出了用于对具有补充增强信息(SEI)的比特流进行编码和解码的创新。具体来说,本具体实施方式描述了这样的实施例,其中,针对画面的SEI消息包括置信度水平指示符,其表明在SEI消息中表明所述画面是逐行扫描画面还是隔行扫描画面的语法元素或标志的准确性的置信度。在一些实施例中,一个或更多语法元素可以一起表示相关联的一个或更多画面是逐行扫描、隔行扫描还是属于未知源。在某些实施例中,SEI消息还包括用于表明相关联的画面是否包括数据的混合和/或相关联的画面是否是重复画面的标志。
[0015] 将参照特定于HEVC标准的语法元素和操作来说明这里所描述的创新中的一些。例如将参照HEVC规范的某些草稿版本——也就是HEVC标准的草稿版本JCTVC-I1003,“High efficiency video coding(HEVC)text specification draft 8(高效率视频编解码(HEVC)文本规范草稿8)”,JCTVC-I1003_d8,第10次会议,Stockholm,2012年7月;以及HEVC标准的草稿版本JCTVC-L1003,“High efficiency video coding(HEVC)text specification draft 10(高效率视频编解码(HEVC)文本规范草稿10)”,JCTVC-L1003_v34,第12次会议,Geneva,CH,2013年1月14-23日。这里所描述的创新还可以针对其他标准或格式来实施。
[0016] 更一般地,针对这里描述的示例的各种替换方案是可能的。举例来说,可以通过改变所描述的方法动作的排序,通过分离、重复或者省略某些方法动作等等,来改动这里所描述的方法中的任何一个。可以组合地或者单独地使用所公开的技术的各个方面。不同的实施例使用所描述的创新中的一项或更多项。这里所描述的创新中的一些解决了在背景技术中提到的问题中的一个或更多。通常来说,给定的技术/工具并不解决所有这样的问题。
[0017] I、示例计算系统
[0018] 图1图示出了可以在其中实施所描述的创新中的几项的适当的计算系统(100)的一般化示例。计算系统(100)不意图暗示关于使用或功能的范围的任何限制,这是因为所述创新可以被实施在多种多样的通用或专用计算系统中。
[0019] 参照图1,计算系统(100)包括一个或更多处理单元(110,115)以及存储器(120,125)。在图1中,该最基本的配置(130)被包括在虚线内。处理单元(110,115)执行计算机可执行指令。处理单元可以是通用中央处理单元(CPU)、专用集成电路(ASIC)中的处理器或者任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。举例来说,图1示出了中央处理单元(110)以及图形处理单元或协处理单元(115)。
有形存储器(120,125)可以是可由(多个)处理单元访问的易失性存储器(例如寄存器、高速缓存、RAM)、非易失性存储器(例如ROM、EEPROM、快闪存储器等等)或者这二者的某种组合。
存储器(120,125)存储软件(180),软件(180)通过适合于由(多个)处理单元执行的计算机可执行指令的形式实施用于编码或解码画面以及SEI消息的一项或更多项创新,其中所述SEI消息具有表明画面源类型、置信度水平以及相关联的画面是否包括数据类型的混合的数据(参见第V节)。
[0020] 计算系统可以具有附加的特征。举例来说,计算系统(100)包括存储装置(140)、一个或更多输入设备(150)、一个或更多输出设备(160)以及一个或更多通信连接(170)。例如总线、控制器或网络之类的互连机制(未示出)互连计算系统(100)的组件。通常来说,操作系统软件(未示出)提供用于在计算系统(100)中执行的其他软件的操作环境,并且协调计算系统(100)的组件的活动。
[0021] 有形存储装置(140)可以是可移除或不可移除的,并且包括磁盘、磁带或磁盒、CD-ROM、DVD或者可以被用来通过非临时的方式存储信息并且可以在计算系统(100)内被访问的任何其他介质。存储装置(140)存储用于软件(180)的指令,所述软件(180)实施用于编码或解码画面以及SEI消息的一项或更多项创新,其中所述SEI消息具有表明画面源类型、置信度水平以及相关联的画面是否包括数据类型的混合的数据(参见第V节)。
[0022] 所述(多个)输入设备(150)可以是例如键盘、鼠标、笔或轨迹球之类的触摸输入设备,语音输入设备,扫描设备,或者向计算系统(100)提供输入的另一设备。对于视频编码,(多个)输入设备(150)可以是照相机、视频卡、TV调谐器卡或者接受模拟或数字形式的视频输入的类似设备,或者将视频样本读取到计算系统(100)中的CD-ROM或CD-RW。所述(多个)输出设备(160)可以是显示器、打印机、扬声器、CD-写入器或者从计算系统(100)提供输出的另一设备。
[0023] 所述(多个)通信连接(170)允许通过通信介质与另一个计算实体通信。所述通信介质在已调制数据信号中递送信息,比如计算机可读指令、音频或视频输入或输出或者其他数据。已调制数据信号是其一项或更多项特性以在所述信号中编码信息的方式被设定或改变的信号。作为举例而非限制,通信介质可以使用电气、光学、RF或其他载体。
[0024] 可以在计算机可读介质的一般情境中描述所述创新。计算机可读介质是可以在计算环境内访问的任何可用有形介质。作为举例而非限制,有形计算机可读介质包括存储器(120,125)、存储装置(140)及其组合,但是不包括临时性传播信号。
[0025] 可以在计算机可执行指令的一般情境中描述所述创新,比如被包括在程序模块中、在目标真实或虚拟处理器上的计算系统中执行的那些计算机可执行指令。一般来说,程序模块包括实施特定任务或实施特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等等。在各种实施例中,可以按照希望在程序模块之间组合或分离所述程序模块的功能。用于程序模块的计算机可执行指令可以在本地或分布式计算系统内执行。
[0026] 术语“系统”和“设备”在这里可以互换使用。除非上下文明确地另有所指,否则术语不表示关于计算系统或计算设备的类型的任何限制。一般来说,计算系统或计算设备可以是本地的或分布式的,并且可以包括专用硬件和/或通用硬件与实施这里所描述的功能的软件的任意组合。
[0027] 还可以利用被配置成实施任何所公开的方法的专用计算硬件来实施所公开的方法。举例来说,所公开的方法可以通过特别被设计或配置成实施任何所公开的方法的集成电路(例如专用集成电路(“ASIC”)(比如ASIC数字信号处理单元(“DSP”)、图形处理单元(“GPU”),或者可编程逻辑器件(“PLD”),比如现场可编程门阵列(“FPGA”))来实施。
[0028] 出于说明的目的,本具体实施方式使用像“确定”和“使用”之类的术语来描述计算系统中的计算机操作。这些术语是对于由计算机实施的操作的高层级抽象,并且不应当与由人类实施的动作混淆。对应于这些术语的实际计算机操作依实现方式而变化。
[0029] II、示例网络环境
[0030] 图2a和2b示出了包括视频编码器(220)和视频解码器(270)的示例网络环境(201,202)。编码器(220)和解码器(270)利用适当的通信协议通过网络(250)连接。网络(250)可以包括因特网或者另一计算机网络。
[0031] 在图2a中所示的网络环境(201)中,每一个实时通信(“RTC”)工具(210)包括编码器(220)和解码器(270)二者以用于双向通信。给定的编码器(220)可以产生遵循SMPTE 421M标准、ISO-IEC14496-10标准(其也已知为H.264或AVC)、HEVC标准、另一种标准或者独占格式的输出,其中对应的解码器(270)接受来自编码器(220)的已编码数据。所述双向通信可以是视频会议、视频电话呼叫或者其他双方通信情形的一部分。虽然图2a中的网络环境(201)包括两个实时通信工具(210),但是网络环境(201)可以替换地包括参与多方通信的三个或更多实时通信工具(210)。
[0032] 实时通信工具(210)管理编码器(220)的编码。图3示出了可以被包括在实时通信工具(210)中的示例编码器系统(300)。可替换地,实时通信工具(210)使用另一编码器系统。实时通信工具(210)还管理解码器(270)的解码。图4示出了可以被包括在实时通信工具(210)中的示例解码器系统(400)。可替换地,实时通信工具(210)使用另一解码器系统。
[0033] 在图2b中所示的网络环境(202)中,编码工具(212)包括编码器(220),编码器(220)对视频进行编码以用于递送到包括解码器(270)的多个回放工具(214)。对于视频监控系统、web照相机监视系统、远程桌面会议呈现或者其中对视频进行编码并且从一个位置发送到一个或更多其他位置的其他情形,可以提供单向通信。虽然图2b中的网络环境(202)包括两个回放工具(214),但是网络环境(202)可以包括更多或更少的回放工具(214)。一般来说,回放工具(214)与编码工具(212)进行通信,以便确定供回放工具(214)接收的视频流。回放工具(214)接收所述流,将所接收到的已编码数据缓冲适当的一段时间,并且开始解码和回放。
[0034] 图3示出了可以被包括在编码工具(212)中的示例编码器系统(300)。可替换地,编码工具(212)使用另一编码器系统。编码工具(212)还可以包括用于管理与一个或更多回放工具(214)的连接的服务器侧控制器逻辑。图4示出了可以被包括在回放工具(214)中的示例解码器系统(400)。可替换地,回放工具(214)使用另一解码器系统。回放工具(214)还可以包括用于管理与编码工具(212)的连接的客户端侧控制器逻辑。
[0035] III、示例编码器系统
[0036] 图3是可以结合一些所描述的实施例来实施的示例编码器系统(300)的方框图。编码器系统(300)可以是能够在多种编码模式(比如用于实时通信的低等待时间编码模式、转码模式以及用于来自文件或流的媒体回放的常规编码模式)当中的任一种编码模式下操作的通用编码工具,或者其可以是针对一种这样的编码模式进行适配的专用编码工具。编码器系统(300)可以被实施成操作系统模块、应用库的一部分和/或独立的应用。总体来说,编码器系统(300)从视频源(310)接收源视频帧(311)序列,并且产生已编码数据作为去到信道(390)的输出。输出到信道的已编码数据可以包括补充增强信息(“SEI”)消息,该补充增强信息消息包括在第V节中描述的语法元素和/或标志。
[0037] 视频源(310)可以是照相机、调谐器卡、存储介质或者其他数字视频源。视频源(310)以例如30帧每秒的帧率产生视频帧序列。如这里所使用的,术语“帧”通常指代源、已编码或重建的图像数据。对于逐行视频,帧是逐行视频帧。对于隔行视频,在示例实施例中,在编码之前对隔行视频帧进行去隔行。可替换地,对于隔行视频,两个互补隔行视频场(complementary interlaced video field)被编码成隔行视频帧或者单独的场。除了表明逐行视频帧之外,术语“帧”还可以表明单个未配对视频场、互补视频场对、代表在给定时间的视频对象的视频对象平面或者更大图像中的感兴趣区段。所述视频对象平面或区段可以是包括一个场景的多个对象或区段的更大图像的一部分。
[0038] 到来的源帧(311)被存储在包括多个帧缓冲器存储区域(321、322、...、32n)的源帧临时存储器存储区域(320)中。帧缓冲器(321、322等等)在源帧存储区域(320)中持有一个源帧。在所述源帧(311)中的一个或更多被存储在帧缓冲器(321、322等等)中之后,帧选择器(330)周期性地从源帧存储区域(320)选择独立的源帧。帧选择器(330)据以选择帧以便输入到编码器(340)的顺序可以不同于视频源(310)据以产生帧的顺序,例如帧的顺序可以提前,以促进时间上的后向预测。在编码器(340)之前,编码器系统(300)可以包括预处理器(未示出),该预处理器在编码之前对所选帧(331)实施预处理(例如滤波)。
[0039] 编码器(340)对所选帧(331)进行编码以产生已编码帧(341),并且还产生存储器管理控制操作(MMCO)信号(342)或参考画面设置(RPS)信息。如果当前帧不是被编码的第一帧,则在实施其编码处理时,编码器(340)可以使用已被存储在已解码帧临时存储器存储区域(360)中的一个或更多先前编码/解码的帧(369)。这样的所存储的已解码帧(369)被用作用于当前源帧(331)的内容的帧间预测的参考帧。一般来说,编码器(340)包括实施例如运动估计和补偿、频率变换、量化以及熵编码之类的编码任务的多个编码模块。由编码器(340)实施的确切操作可以依压缩格式而变化。输出的已编码数据的格式可以是Windows Media Video格式、VC-1格式、MPEG-x格式(例如MPEG-1、MPEG-2或MPEG-4)、H.26x格式(例如H.261、H.262、H.263、H.264)、HEVC格式或其他格式。
[0040] 举例来说,在编码器(340)内,根据来自参考帧的预测来表示帧间编码的预测帧。运动估计器估计源帧(341)的宏块、块或其他样本集合关于一个或更多参考帧(369)的运动。当使用多个参考帧时,所述多个参考帧可以来自不同的时间方向或者相同的时间方向。
运动估计器输出运动信息,比如经过熵编码的运动矢量信息。运动补偿器将运动矢量应用于参考帧,以便确定经过运动补偿的预测值。编码器确定块的经过运动补偿的预测值与对应的原始值之间的差异(如果有的话)。利用频率变换、量化和熵编码对这些预测残差值进一步进行编码。类似地,对于帧内预测,编码器(340)可以确定针对块的帧内预测值,确定预测残差值,并且对预测残差值进行编码。具体来说,编码器(340)的熵编码装置压缩经过量化的变换系数值以及特定边信息(side information)(例如运动矢量信息、量化参数值、模式决定、参数选择)。典型的熵编码技术包括Exp-Golomb编码、算术编码、差分编码、Huffman编码、游程编码、可变长度到可变长度(V2V)编码、可变长度到固定长度(V2F)编码、LZ编码、字典编码、概率区间分区熵编码(PIPE)以及前述各项的组合。熵编码装置可以对于不同种类的信息使用不同的编码技术,并且可以从特定编码技术内的多个代码表中做出选择。
[0041] 由解码处理模拟器(350)对已编码帧(341)和MMCO/RPS信息(342)进行处理。解码处理模拟器(350)实施解码器的一些功能,例如用以重建由编码器(340)在运动估计和补偿中使用的参考帧的解码任务。解码处理模拟器(350)使用MMCO/RPS信息(342)来确定给定的已编码帧(341)是否需要被重建并且被存储以便用作在将被编码的后续帧的帧间预测中的参考帧。如果MMCO/RPS信息(342)表明已编码帧(341)需要被存储,解码处理模拟器(350)对将由解码器实施的解码处理进行模仿,其接收已编码帧(341)并且产生对应的已解码帧(351)。在这样做时,当编码器(340)使用了被存储在已解码帧存储区域(360)中的(多个)已解码帧(369)时,解码处理模拟器(350)作为解码处理的一部分也使用来自存储区域(360)的(多个)已解码帧(369)。
[0042] 已解码帧临时存储器存储区域(360)包括多个帧缓冲器存储区域(361、362、...、36n)。解码处理模拟器(350)使用MMCO/RPS信息(342)来管理存储区域(360)的内容,以便识别出具有不再被编码器(340)需要来用作参考帧的帧的任何帧缓冲器(361、362等等)。在对解码处理进行模仿之后,解码处理模拟器(350)将新解码的帧(351)存储在已通过这种方式识别出的帧缓冲器(361、362等等)中。
[0043] 已编码帧(341)和MMCO/RPS信息(342)还被缓冲在临时已编码数据区域(370)中。被聚集在已编码数据区域(370)中的已编码数据还可以包括与已编码视频数据有关的媒体元数据(例如作为一条或更多条补充增强信息(“SEI”)消息或视频可用性信息(“VUI”)消息中的一项或更多项参数)。SEI消息可以包括在第V节中描述的语法元素和/或标志。
[0044] 来自临时已编码数据区域(370)的聚集数据(371)由信道编码器(380)处理。信道编码器(380)可以对所述聚集数据进行分组化,以便作为媒体流来传送(例如根据诸如ISO/IEC 14496-12之类的媒体容器格式),在这种情况下,信道编码器(380)可以添加语法元素以作为媒体传送流的语法的一部分。或者,信道编码器(380)可以对聚集数据进行组织以便作为文件存储(例如根据诸如ISO/IEC14496-12之类的媒体容器格式),在这种情况下,信道编码器(380)可以添加语法元素以作为媒体存储文件的语法的一部分。或者更一般来说,信道编码器(380)可以实施一种或更多种媒体系统多路复用协议或传输协议,在这种情况下,信道编码器(380)可以添加语法元素以作为所述(多种)协议的语法的一部分。信道编码器(380)向信道(390)提供输出,所述信道(390)代表针对该输出的存储、通信连接或者另一信道。
[0045] IV、示例解码器系统
[0046] 图4是可以结合一些所描述的实施例来实施的示例解码器系统(400)的方框图。解码器系统(400)可以是能够在多种解码模式(比如用于实时通信的低等待时间解码模式以及用于来自文件或流的媒体回放的常规解码模式)当中的任一种解码模式下操作的通用解码工具,或者其可以是针对一种这样的解码模式进行适配的专用解码工具。解码器系统(400)可以被实施成操作系统模块,应用库的一部分或者独立的应用。总体来说,解码器系统(400)从信道(410)接收已编码数据,并且产生重建帧以作为用于输出目的地(490)的输出。所述已编码数据可以包括补充增强信息(“SEI”)消息,该补充增强信息消息包括在第V节中描述的语法元素和/或标志。
[0047] 解码器系统(400)包括信道(410),其可以代表针对作为输入的已编码数据的存储、通信连接或者另一信道。信道(410)产生已被信道编码的已编码数据。信道解码器(420)对已编码数据进行处理。举例来说,信道解码器(420)对已被聚集以作为媒体流传送的数据(例如根据诸如ISO/IEC 14496-12之类的媒体容器格式)进行去分组化,在这种情况下,信道解码器(420)可以解析作为媒体传送流的语法的一部分而添加的语法元素。或者信道解码器(420)分解已被聚集以作为文件存储的已编码视频数据(例如根据诸如ISO/IEC14496-12之类的媒体容器格式),在这种情况下,信道解码器(420)可以解析作为媒体存储文件的语法的一部分而添加的语法元素。或者更一般来说,信道解码器(420)可以实施一种或更多种媒体系统解复用协议或传输协议,在这种情况下,信道解码器(420)可以解析作为所述(多种)协议的语法的一部分而添加的语法元素。
[0048] 从信道解码器(420)输出的已编码数据(421)被存储在临时已编码数据区域(430)中,直到接收到足够数量的此类数据为止。已编码数据(421)包括已编码帧(431)和MMCO/RPS信息(432)。已编码数据区域(430)中的已编码数据(421)还可以包括与已编码视频数据有关的媒体元数据(例如作为一条或更多条SEI消息或VUI消息中的一项或更多项参数)。SEI消息可以包括在第V节中描述的语法元素和/或标志。一般来说,已编码数据区域(430)临时存储已编码数据(421),直到这样的已编码数据(421)被解码器(450)使用为止。在那时,针对已编码帧(431)和MMCO/RPS信息(432)的已编码数据被从已编码数据区域(430)传送到解码器(450)。随着解码继续,新的已编码数据被添加到已编码数据区域(430),并且保持在已编码数据区域(430)中的最早的已编码数据被传送到解码器(450)。
[0049] 解码器(450)周期性地解码已编码帧(431),以便产生对应的已解码帧(451)。在适当的情况下,在实施其解码处理时,解码器(450)可以使用一个或更多先前解码帧(469)以作为用于帧间预测的参考帧。解码器(450)从已解码帧临时存储器存储区域(460)读取这样的先前解码帧(469)。一般来说,解码器(450)包括实施例如熵解码、逆量化、逆频率变换以及运动补偿之类的解码任务的多个解码模块。由解码器(450)实施的确切操作可以依压缩格式而变化。
[0050] 举例来说,解码器(450)接收针对已压缩帧或帧序列的已编码数据,并且产生包括已解码帧(451)的输出。在解码器(450)中,缓冲器接收针对已压缩帧的已编码数据,并且使得所接收到的已编码数据可用于熵解码器。熵解码器对经过熵编码的已量化数据以及经过熵编码的边信息进行熵解码,其中通常应用在编码器中实施的熵编码的逆操作。第V节描述了具有SEI消息(其包括在第V节中描述的语法元素和/或标志)的能够由解码器450解码的已编码数据的示例。运动补偿器对一个或更多参考帧应用运动信息,从而形成所重建帧的子块、块和/或宏块(一般来说是块)的运动补偿的预测。帧内预测模块可以在空间上从相邻的先前重建的样本值预测当前块的样本值。解码器(450)还重建预测残差。逆量化器对经过熵解码的数据进行逆量化。逆频率变换器把经过量化的频域数据转换成空间域信息。对于预测帧,解码器(450)将经过重建的预测残差与经过运动补偿的预测组合以形成重建帧。解码器(450)可以类似地把预测残差与来自帧内预测的空间预测相组合。视频解码器(450)中的运动补偿环路包括自适应去块化(de-blocking)滤波器,以便平滑跨越已解码帧(451)中的块边界行和/或列的不连续。
[0051] 已解码帧临时存储器存储区域(460)包括多个帧缓冲器存储区域(461、462、...、46n)。已解码帧存储区域(460)是DPB的一个示例。解码器(450)使用MMCO/RPS信息(432)来识别其可以在当中存储已解码帧(451)的帧缓冲器(461、462等等)。解码器(450)将已解码帧(451)存储在该帧缓冲器中。
[0052] 输出定序器(480)使用MMCO/RPS信息(432)来识别将以输出顺序产生的下一帧何时在已解码帧存储区域(460)中可用。当将以输出顺序产生的下一帧(481)在已解码帧存储区域(460)中可用时,其由输出定序器(480)读取并且被输出到输出目的地(490)(例如显示器)。一般来说,由输出定序器(480)据以将帧从已解码帧存储区域(460)输出的顺序可以不同于由解码器(450)据以解码帧的顺序。
[0053] V、用于表明视频帧的混合特性和类型指示信息的置信度水平的示例性实施例[0054] 本节描述了用于对具有表明画面源数据的编码器置信度水平的信息(例如语法元素、标志或其扩展)的比特流进行编码和/或解码的几种变型。具体来说,本节给出了这样的示例,其中SEI消息包括所述消息中的画面源数据的置信程度的指示(例如关于SEI消息中的progressive_source_flag(逐行源标志)、mixed_characteristics_flag(混合特性标志)和/或duplicate_flag(重复标志)(或者关于任何等效标志或语法元素)的准确性的置信度水平)。这样的附加信息是有用的,因为某些编码器可能不能肯定地确定画面源数据的准确值。添加用以表达关于画面源数据的置信程度的指示符可以帮助解码器确定如何最佳地使用以及呈现所接收到的画面数据。此外,编码器还可能遇到具有混合的逐行/隔行特性的视频内容。在某些实现方式中,附加的语法元素或标志可以被包括以表明所述内容具有混合特性,而不是表现出纯粹隔行或纯粹逐行的源特性。前面描述的任何编码器或解码器可以被适配来使用所公开的编码和解码技术。
[0055] 根据HEVC标准的草稿8(“High efficiency video coding(HEVC)text specification draft 8(高效率视频编解码(HEVC)文本规范草稿8)”,JCTVC-I1003_d8,第10次会议,Stockholm,2012年7月),在“场指示(field indication)”SEI消息中存在被用来描述画面源的属性的两个语法元素:progressive_source_flag和duplicate_flag。
progressive_source_flag的值“1”表明相关联的画面的扫描类型应当被解释成逐行,并且progressive_source_flag的值“0”表明相关联的画面的扫描类型应当被解释成隔行。当所述场指示SEI消息不存在时,progressive_source_flag的值被推断为等于“1”。在其他实现方式中,这些值被反转。
[0056] 此外,duplicate_flag的值“1”表明当前画面是按输出顺序的前一个画面的重复,并且duplicate_flag的值“0”表明当前画面不是重复画面。在其他实现方式中,这些值被反转。
[0057] 但是在某些应用情形中,HEVC编码系统可能不具有足够的信息来确定progressive_source_flag和/或duplicate_flag语法元素的正确值。举例来说,所述编码系统可能简单地接收场或帧作为输入视频数据,并且可能在其计算能力、存储器容量或延迟特性方面存在限制,这些限制使得编码器无法对源内容特性实施深度分析。此外,某些编码系统可能对于来自未压缩画面的信息仅具有受限制的访问。因此,编码系统可能难以确定源的真实特性。还有可能的是,源内容可能表现出混合特性。举例来说,源内容可能是隔行和逐行内容的混合。应用于逐行扫描视频的基于场的文本或图形覆盖物是具有混合特性的内容的一个示例。
[0058] 为了解决这些问题,所公开的技术的实施例包括能够表明其具有的关于其对于所述内容是隔行还是逐行的指示的置信程度的编码器。解码器或显示子系统可以使用所表明的置信程度来控制后续的处理(比如去隔行处理),或者控制解码器是否应当由其自身来检测源视频属性而不是依赖于编码器所表明的那些属性。此外,在某些实现方式中,编码器能够表明已编码内容是否具有混合特性。关于混合的逐行-隔行内容的这个指示还可以由解码器使用来适当地处理已编码比特流。
[0059] 在某些实施例中,SEI消息(例如伴随画面的SEI消息)包括用于表明源指示的置信度水平的标志或语法元素(例如表明编码器的关于内容是隔行数据还是逐行数据的源指示和/或编码器的重复画面指示的准确性的值)。
[0060] 例如在HEVC标准的草稿8的情境中,场指示SEI消息可以包括用于表明场指示信息的语法元素(其表明源视频属性)的置信度水平(特别是progressive_source_flag和/或duplicate_flag的置信度水平)的语法元素。此外,在某些实现方式中,场指示SEI消息还包括用于表明已编码内容是否包括混合特性(例如混合的逐行和隔行内容)的标志。
[0061] 在一个特定实现方式中,用于field_indication(场指示)SEI消息的语法如下:
[0062]
[0063] 表1:示例场指示SEI消息语法。
[0064] 在前面示出的示例性语法中应当注意的是“mixed_characteristics_flag(混合特性标志)和“confidence_level(置信度水平)”语法元素。
[0065] 在一种示例实现方式中,mixed_characteristics_flag等于“1”表明视频内容具有混合的逐行和隔行扫描特性。这样的混合特性视频例如可以在基于场的图形覆盖了另外逐行扫描的视频内容时生成。mixed_characteristics_flag等于“0”表明视频内容不具有混合特性。在其他实现方式中,mixed_characteristics_flag的值是从前面描述的那些值反转的。
[0066] confidence_level语法元素可以是一比特语法元素、两比特语法元素或者多于两个比特的语法元素。在某些实施例中,confidence_level语法元素是两比特语法元素。在一个特定实现方式中,例如confidence_level语法元素等于“3”表明高度确信progressive_source_flag、source_scan_type(源扫描类型)、mixed_characteristics_flag或duplicate_flag当中的任何一项或更多项是正确的,以及解码器可以确信地依赖于该信息;confidence_level语法元素等于“2”表明对于这些语法元素当中的任何一项或更多项是正确的合理置信程度,以及除非在解码器中有强大的能力可用来对于内容特性实施进一步分析,否则对于后续处理(例如后续解码器处理)推荐遵循(honor)该信息;confidence_level语法元素等于“1”表明如何可行的话应当对于内容特性实施进一步分析;以及confidence_level语法元素等于“0”表明后续处理不应当依赖于这些语法元素的正确性。
[0067] 应当理解的是,这四个示例性水平仅仅是示例,并且可以使用任何其他数目的水平。举例来说,在某些实施例中可以使用2比特置信度水平语法元素来标志三个置信度水平:解码器将要(或者应当)据以使用源指示信息的高确定性水平,除非解码器可以在解码期间准确地检测到源信息否则解码器应当据以遵循所述信息的中等确定性水平,以及解码器应当据以实施其自身的源指示信息检测的低或无确定性水平。
[0068] 此外,在某些实施例中使用多个confidence_level语法元素。举例来说,对于progressive_source_flag、mixed_characteristics_flag或duplicate_flag可以存在单独的confidence_level语法元素。
[0069] 如前所述,所公开的技术的实施例包括向补充增强信息(SEI)消息添加表明包含在所述消息中的数据准确性的置信度水平的信息。例如在特定实现方式中,所公开的技术包括针对HEVC标准中的画面层级SEI消息的扩展。此外,一些实施例附加地或可替换地包括用于描述视频内容的源特性的标志(例如用于表明视频包括混合特性的标志)。例如在其中编码器具有关于视频内容来源的扫描格式的有限信息、有限的分析资源和/或对于未压缩画面的受限制访问的情形中,置信度水平语法元素和源特性语法元素可能是有用的。
[0070] 在某些情况下,解码器系统的计算能力有限、对于未压缩画面的访问受到限制或者存在某种其他限制,该其他限制使得解码器难以或者不可能对已解码视频进行分析或者按照被定制来对所表明的置信度水平信息做出响应的方式来对其进行处理。在这样的情况下,解码器可能不能凭借其自身导出内容特性。因此,在某些实施例中,解码器系统“照原样”遵循已编码比特流中的场指示或画面定时信息。也就是说,在某些实现方式中,解码器不使用confidence_level语法元素,而是在不管置信度水平如何的情况下遵照SEI消息中的信息。
[0071] 应当理解的是,在所公开的技术的某些实施例中,mixed_characteristics_flag和confidence_level指示语法元素可以彼此被分开实施。如果在没有mixed_characteristics_flag的情况下使用confidence_level指示语法元素,则confidence_level指示的语义在其语义中通常将不会提到任何的mixed_characteristics_flag。
[0072] 最近,根据HEVC标准的草稿10(“High efficiency video coding(HEVC)text specification draft 10(高效率视频编解码(HEVC)文本规范草稿10)”,JCTVC-L1003_v34,第12次会议,Geneva,CH,2013年1月),利用不同的标志来传达源类型信息。具体来说,根据草稿10,画面源信息被包括在“画面定时”SEI消息中。具体来说,画面定时SEI消息是包括source_scan_type语法元素和duplicate_flag语法元素的画面层级SEI消息。此外,在草稿10中,source_scan_type值等于“1”表明相关联的画面的源扫描类型应当被解释成逐行,以及source_scan_type值等于“0”表明相关联的画面的源扫描类型应当被解释成隔行。此外,source_scan_type值等于“2”表明相关联的画面的源扫描类型是未知的或未规定的,而source_scan_type等于“3”则被保留以便未来使用,并且应当由解码器解释成等效于值“2”。
[0073] 在特定实现方式中,source_scan_type的值是从存在于简档、层次和/或层级信息中(例如简档、层次和/或层级SEI消息中)的两个语法元素确定的:general_progressive_source_flag(一般逐行源标志)和general_interlaced_source_flag(一般隔行源标志)。此外,source_scan_type语法元素可能并不总是存在,在这种情况下,general_progressive_source_flag和general_interlaced_source_flag可以被用来确定源类型。
[0074] 在一种示例实现方式中,general_progressive_source_flag和general_interlaced_source_flag被如下解释。如果general_progressive_source_flag等于“1”并且此外general_interlaced_source_flag等于“0”,则相关联的已编码视频片段中的画面的源扫描类型应当被解释成逐行。在这种情况下,并且在一种特定实现方式中,source_scan_type的值在存在时等于“1”,并且在不存在时应当被推断为等于“1”。如果general_progressive_source_flag等于“0”并且general_interlaced_source_flag等于“1”,则相关联的已编码视频片段中的画面的源扫描类型应当被解释成隔行。在这种情况下,并且在一种特定实现方式中,source_scan_type的值在存在时等于“0”,并且在不存在时应当被推断为等于“0”。如果general_progressive_source_flag等于“0”并且general_interlaced_source_flag等于“0”,则相关联的已编码视频片段中的画面的源扫描类型应当被解释成未知或未规定。在这种情况下,并且在一种特定实现方式中,source_scan_type的值在存在时等于“2”,并且在不存在时应当被推断为等于“2”。如果general_progressive_source_flag等于“1”并且general_interlaced_source_flag等于“1”,则利用语法元素(例如画面定时SEI消息中的source_scan_type)在画面层级独立地表明相关联的已编码视频片段中的每一个画面的源扫描类型。应当理解的是,这些值仅仅是出于举例的目的,并且可以使用不同的值或值组合来发信号通知逐行画面、隔行画面或者具有未知扫描源的画面。
[0075] general_progressive_source_flag和general_interlaced_source_flag的操作类似于前面描述的progressive_source_flag和confidence_level语法元素。具体来说,与progressive_source_flag和confidence_level语法元素的聚合性操作一样,general_progressive_source_flag和general_interlaced_source_flag一起操作来标识一个或更多画面是逐行还是隔行以及与该确定相关联的置信度水平。举例来说,当general_progressive_source_flag和general_interlaced_source_flag是“1”和“0”(或“0”和“1”)时,则所述语法元素表明画面是逐行的(或隔行的)。此外,这一指示具有高置信度水平。但是如果存在在画面类型方面的低置信度水平,则general_progressive_source_flag和general_interlaced_source_flag分别具有值“0”,从而表明源扫描类型是未知的。因此,general_progressive_source_flag和general_interlaced_source_flag给出了与前面介绍的confidence_level语法元素和progressive_source_flag具有相同质量或特性的信息,其仅仅是使用略微不同的格式。
[0076] HEVC标准的草稿10还包括duplicate_flag语法元素。在所描述的特定实现方式中,duplicate_flag的值“1”表明当前画面被表明是按输出顺序的先前画面的重复,而duplicate_flag的值“0”则表明当前画面未被表明是按输出顺序的先前画面的重复。
[0077] 在HEVC标准的草稿10的情境中,画面定时SEI消息可以包括source_scan_type语法元素,其用于表明画面是逐行的、隔行的还是未知的(如前面所描述的那样)。画面定时SEI消息还可以包括duplicate_flag。
[0078] 在一种特定实现方式中,画面定时SEI消息(其也被称作pic_timing SEI消息)的语法如下:
[0079]
[0080] 表2:示例画面定时SEI消息语法。
[0081] 此外,虽然当前不在草稿HEVC标准中,但是在某些实现方式中,画面定时SEI消息还可以包括用于表明已编码内容是否包括混合特性(例如混合的逐行和隔行内容)的标志。举例来说,在一种示例实现方式中,可以使用mixed_characteristics_flag来表明画面是否具有混合的逐行和隔行扫描特性。举例来说,mixed_characteristics_flag等于“1”表明视频内容具有混合的逐行和隔行扫描特性。这样的混合特性视频例如可以在基于场的图形覆盖了另外逐行扫描的视频内容时生成。mixed_characteristics_flag等于“0”表明视频内容不具有混合特性。在其他实现方式中,mixed_characteristics_flag的值是从前面描述的那些值反转的。
[0082] 此外,可以创建单独的置信度水平语法元素并且将其与general_progressive_source_flag、general_interlaced_source_flag和/或source_scan_type语法元素一起使用。举例来说,置信度水平语法元素可以被用来表明关于由general_progressive_source_flag和general_interlaced_source_flag表明的信息的置信度。置信度水平语法元素可以具有任意数目的水平。举例来说,所述语法元素可以是单比特语法元素、两比特语法元素或更多比特语法元素。此外,在某些实施例中,使用多个confidence_level语法元素。举例来说,对于source_scan_type元素、mixed_characteristics_flag或duplicate_flag可以存在单独的confidence_level语法元素。
[0083] 图5是根据所公开的技术的实施例的一般化编码方法的流程图500。所图示出的方法可以利用计算硬件(例如计算机处理器或集成电路)来实施。举例来说,所述方法可以由如图1中所示的计算硬件实施。此外,所述方法还可以被实施成存储在一个或更多计算机可读存储介质(例如有形计算机可读存储介质)上的计算机可执行指令。
[0084] 在510处,对比特流或比特流部分的一个或更多画面进行编码。在所图示出的实施例中,所述一个或更多画面连同被用来表明所述一个或更多画面的源扫描类型的一个或更多语法元素一起被编码。所述一个或更多语法元素例如可以被包括在SEI消息中。此外,所述语法元素可以是特定于画面的,或者可以标识两个或更多画面的特性。在所图示出的实施例中,所述语法元素表明已编码画面的以下状态当中的一项或更多项:(a)表明所述一个或更多画面属于隔行扫描类型的状态,(b)表明所述一个或更多画面属于逐行扫描类型的状态,以及(c)表明所述一个或更多画面属于未知源扫描类型的状态。
[0085] 在512处,输出已编码比特流或比特流部分(其例如被存储在非易失性计算机可读介质上并且/或者被传送)。
[0086] 在特定实现方式中,所述一个或更多语法元素包括表明所述一个或更多画面是否属于隔行扫描类型的第一标志,以及表明所述一个或更多画面是否属于逐行扫描类型的第二标志。在其他实现方式中,所述一个或更多语法元素包括单一语法元素。此外,在某些实现方式中,所述一个或更多语法元素包括表明所述一个或更多画面是否属于逐行扫描类型的一个或更多比特的第一语法元素(源指示符),以及表明第一标志的值的置信度水平的一个或更多比特的第二语法元素(置信度水平)。在这样的实现方式中,置信度水平语法元素可以表明两个或更多置信度水平。举例来说,置信度水平语法元素可以包括四个置信度水平,其中第一个置信度水平发信号通知源指示符是准确的,其中第二个置信度水平发信号通知源指示符可能是准确的,其中第三个置信度水平表明源指示符可能是不准确的,并且其中第四个置信度水平表明源指示符是不准确的。
[0087] 在某些实现方式中,编码动作还可以包括对重复画面标志和/或混合数据标志进行编码,其中重复画面标志表明所述一个或更多画面是否是重复画面,混合数据标志表明所述一个或更多画面是否包括视频类型的混合。
[0088] 图6是根据所公开的技术的实施例的一般化解码方法的流程图600。所图示出的方法可以利用计算硬件(例如计算机处理器或集成电路)来实施。举例来说,所述方法可以由如图1中所示的计算硬件实施,或者被实施成存储在一个或更多计算机可读存储介质(例如有形计算机可读存储介质)上的计算机可执行指令。
[0089] 在610处,接收(例如加载、缓冲或者以其他方式准备以供进一步处理)比特流或比特流部分的一个或更多画面。在所图示出的实施例中,所述比特流或比特流部分还包括被用来表明所述一个或更多画面的画面源扫描类型的一个或更多语法元素。所述语法元素可以是特定于画面的,或者可以标识两个或更多画面的特性。在所图示出的实施例中,所述语法元素表明所述一个或更多已解码画面的以下状态当中的一项或更多项:(a)表明所述一个或更多画面属于隔行扫描类型的状态,(b)表明所述一个或更多画面属于逐行扫描类型的状态,以及(c)表明所述一个或更多画面属于未知源扫描类型的状态。
[0090] 在612处,解码所述一个或更多画面(例如利用前面所公开的、在这里所讨论的草稿HEVC标准中描述了的任何解码,或者任何其他已知的解码技术)。
[0091] 在614处,根据通过所述一个或更多语法元素标识的源扫描类型对已解码的一个或更多画面进行处理。举例来说,在某些实施例中,可以根据所标识的扫描类型来显示所述一个或更多画面(例如可以显示隔行或逐行扫描视频)。在其他实施例中,可以对已解码的一个或更多画面进行处理以供后来显示。举例来说,实施所图示出的方法的解码器设备可以对被用信号通知为隔行的画面进行去隔行,并且随后对所得到的视频进行转码、存储和/或传送(例如将视频传送到另一个设备或模块,该另一个设备或模块存储所述视频或者使得其被显示)。在其中所述一个或更多语法元素表明低置信度水平或者扫描类型未知的情况下,所述处理可以涉及,对所述一个或更多画面进行分析以便确定其扫描类型。
[0092] 在特定实现方式中,所述一个或更多语法元素包括表明所述一个或更多画面是否属于隔行扫描类型的第一标志,以及表明所述一个或更多画面是否属于逐行扫描类型的第二标志。在其他实现方式中,所述一个或更多语法元素包括单一语法元素。此外,在某些实现方式中,所述一个或更多语法元素包括表明所述一个或更多画面是否是逐行扫描的一个或更多比特的第一语法元素(源指示符),以及表明第一标志的值的置信度水平的一个或更多比特的第二语法元素(置信度水平)。在这样的实现方式中,置信度水平语法元素可以表明两个或更多置信度水平。举例来说,置信度水平语法元素可以包括四个置信度水平,其中第一个置信度水平发信号通知源指示符是准确的,其中第二个置信度水平发信号通知源指示符可能是准确的,其中第三个置信度水平表明源指示符可能是不准确的,并且其中第四个置信度水平表明源指示符是不准确的。
[0093] 在某些实现方式中,解码动作还可以包括对重复画面标志和/或混合数据标志进行解码,其中重复画面标志表明所述一个或更多画面是否是重复画面,混合数据标志表明所述一个或更多画面是否包括视频类型的混合。
[0094] 鉴于可以为之应用所公开的本发明的原理的许多可能的实施例,应当认识到,所图示出的实施例仅仅是本发明的优选实例,并且不应当被当作限制本发明的范围。相反,本发明的范围由所附权利要求书及其等效表述限定。因此,本公开要求保护作为本发明的、落在这些权利要求及其等效表述的范围和精神内的所有内容。