CN114731385A - 视频译码中用于多视图的同播层 - Google Patents

视频译码中用于多视图的同播层 Download PDF

Info

Publication number
CN114731385A
CN114731385A CN202080066246.2A CN202080066246A CN114731385A CN 114731385 A CN114731385 A CN 114731385A CN 202080066246 A CN202080066246 A CN 202080066246A CN 114731385 A CN114731385 A CN 114731385A
Authority
CN
China
Prior art keywords
layer
ols
vps
layers
flag
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080066246.2A
Other languages
English (en)
Inventor
王业奎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN114731385A publication Critical patent/CN114731385A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods 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 bits, e.g. of the compressed video stream
    • 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/187Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scalable video layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/79Processing of colour television signals in connection with recording
    • H04N9/80Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
    • H04N9/804Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components
    • H04N9/8042Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback involving pulse code modulation of the colour picture signal components involving data reduction

Landscapes

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

Abstract

本发明公开了一种视频译码机制。所述机制包括对包括编码图像的一个或多个层的码流进行编码。视频参数集(video parameter set,VPS)也被编码到所述码流中。当由所述VPS指定的所有层被独立编码而不需要层间预测时,所述VPS包括每个层是输出层集(output layer set,OLS)标志(each_layer_is_an_ols_flag)。所述each_layer_is_an_ols_flag表示每个OLS是否仅包括一个层。所述码流被存储,以发送给解码器。

Description

视频译码中用于多视图的同播层
相关申请的交叉引用
本专利申请要求王业奎于2019年9月24日提交的、标题为“支持具有用于同播层的多于一个输出层的操作点(Support Of Operation Points With More Than One OutputLayer For Simulcast Layers)”的美国临时专利申请第62/905,126号的权益,该美国临时专利申请通过引用的方式并入本文中。
技术领域
本发明大体上涉及视频译码,具体涉及在多层码流中配置输出层集(outputlayer set,OLS)以用于多视图应用。
背景技术
即使视频相对较短,也需要大量的视频数据来描述,当数据要在带宽容量有限的通信网络中流式传输或以其它方式传输时,这样可能会造成困难。因此,视频数据通常要先压缩,然后通过现代电信网络进行传输。由于内存资源可能有限,当在存储设备中存储视频时,该视频的大小也可能是一个问题。视频压缩设备通常在源侧使用软件和/或硬件对视频数据进行编码,然后进行传输或存储,从而减少表示数字视频图像所需的数据量。然后,由对视频数据进行解码的视频解压缩设备在目的地侧接收压缩数据。在有限的网络资源以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。
发明内容
在一个实施例中,本发明包括一种在解码器中实现的方法,所述方法包括:所述解码器的接收器接收包括编码图像的一个或多个层和视频参数集(video parameter set,VPS)的码流,其中,当由所述VPS指定的所有层被独立编码而不需要层间预测时,每个层是输出层集(output layer set,OLS)标志(each_layer_is_an_ols_flag)包括在所述VPS中,所述each_layer_is_an_ols_flag表示每个OLS是否仅包括一个层;所述解码器的处理器根据所述VPS中的所述each_layer_is_an_ols_flag,对来自OLS的输出层的编码图像进行解码,以生成解码图像;所述处理器转发所述解码图像,以作为解码视频序列的一部分显示。
图像层可以用于支持可适性。例如,视频可以编码成多个层。可以在不参考其它层的情况下对层进行编码。这种层被称为同播层。相应地,可以在不参考其它层的情况下对同播层进行解码。又例如,可以使用层间预测对层进行编码。这支持通过仅包括当前层与参考层之间的差异来对当前层进行编码。层可以被组织成OLS。OLS是层集合,包括至少一个输出层和支持对输出层进行解码的任何层。在特定示例中,第一OLS可以包括基本层,而第二OLS可以包括基本层和具有增加特性的增强层。在一个示例中,第一OLS可以被发送给解码器以使视频能够以基本分辨率解码,或者第二OLS可以被传输以使视频能够以更高的增强分辨率解码。因此,视频可以根据用户请求缩放。在一些情况下,不使用可适性,每个层都被编码为同播层。一些系统推断,如果所有层都是同播的,则每个OLS都应包括单个层(因为不使用参考层)。这种推断提高了译码效率,因为指示可以从编码码流中省略。但是,这种推断不支持多视图。多视图也被称为立体视频。在多视图中,同一场景的两个视频序列由空间偏移相机录制。这两个视频序列在头戴式设备的不同镜头上显示给用户。以这种方式为每只眼睛显示不同的空间偏移序列可以创建三维(three dimension,3D)视频和/或视觉深度的印象。因此,实现多视图的OLS包括两个层(例如,每只眼睛一个层)。但是,当这些层都是同播的时,视频解码器可以使用该推断来推断每个OLS仅包括一个层。这可能会导致错误,因为解码器可能只显示多视图的一个层,或者可能无法继续显示两个层中的任一个层。因此,当所有层是同播的时,每个OLS包括单个层的推断可能会使多视图应用无法在解码器上正确呈现。
本示例包括当视频中的所有层是同播的且不使用层间预测时使视频译码系统能够对多视图视频进行正确解码的机制。当层中没有一个层使用层间预测(例如,所有层是同播的)时,VPS所有独立层标志(vps_all_independent_layers_flag)可以包括在码流中的VPS中,并被设置为1。当该标志被设置为1时,each_layer_is_an_ols_flag在VPS中指示。each_layer_is_an_ols_flag可以被设置为表示每个OLS是否包括单个层或至少一个OLS是否包括多于一个层(例如,以支持多视图)。因此,vps_all_independent_layers_flag和each_layer_is_an_ols_flag可用于支持多视图应用。此外,当出现这种情况时,OLS模式标识码(ols_mode_idc)可以在VPS中被设置为2。这将导致OLS的数量和与OLS相关的层被显式地指示。然后,解码器可以使用该信息对包括多视图视频的OLS进行正确解码。这种方法支持纠正错误的同时保证了译码效率。因此,所公开的机制增加了编码器和/或解码器的功能。此外,所公开的机制可以减小码流大小,并因此减少编码器和解码器处的处理器、内存和/或网络资源的使用。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,当表示每个OLS仅包括一个层,并且每个层是所述每个OLS中唯一的输出层时,所述each_layer_is_an_ols_flag被设置为1。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,当表示至少一个OLS包括多于一个层时,所述each_layer_is_an_ols_flag被设置为0。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,当OLS模式标识码(ols_mode_idc)等于2时,OLS的总数被显式地指示,与OLS相关联的层被显式地指示,并且当VPS所有独立层标志(vps_all_independent_layers_flag)被设置为1时,并且当所述each_layer_is_an_ols_flag被设置为0时,所述ols_mode_idc被推断为等于2。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述VPS包括被设置为1的vps_all_independent_layers_flag,以表示由所述VPS指定的所有层被独立编码,而不需要层间预测。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述VPS包括VPS最大层数减1(vps_max_layers_minus1)语法元素,所述vps_max_layers_minus1语法元素表示由所述VPS指定的层的数量,并且当vps_max_layers_minus1大于0时,所述vps_all_independent_layers_flag被指示。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,当ols_mode_idc等于2时,所述VPS包括输出层集的数量减1(num_output_layer_sets_minus1),所述num_output_layer_sets_minus1表示由所述VPS指定的OLS的总数。
在一个实施例中,本发明包括一种在编码器中实现的方法,所述方法包括:所述编码器的处理器对包括编码图像的一个或多个层的码流进行编码;所述处理器将VPS编码到所述码流中,其中,当由所述VPS指定的所有层被独立编码而不需要层间预测时,所述VPS包括each_layer_is_an_ols_flag,所述each_layer_is_an_ols_flag表示每个OLS是否仅包括一个层;耦合到所述处理器的存储器存储所述码流,以发送给解码器。
图像层可以用于支持可适性。例如,视频可以编码成多个层。可以在不参考其它层的情况下对层进行编码。这种层被称为同播层。相应地,可以在不参考其它层的情况下对同播层进行解码。又例如,可以使用层间预测对层进行编码。这支持通过仅包括当前层与参考层之间的差异来对当前层进行编码。层可以被组织成OLS。OLS是层集合,包括至少一个输出层和支持对输出层进行解码的任何层。在特定示例中,第一OLS可以包括基本层,而第二OLS可以包括基本层和具有增加特性的增强层。在一个示例中,第一OLS可以被发送给解码器以使视频能够以基本分辨率解码,或者第二OLS可以被传输以使视频能够以更高的增强分辨率解码。因此,视频可以根据用户请求缩放。在一些情况下,不使用可适性,每个层都被编码为同播层。一些系统推断,如果所有层都是同播的,则每个OLS都应包括单个层(因为不使用参考层)。这种推断提高了译码效率,因为指示可以从编码码流中省略。但是,这种推断不支持多视图。多视图也被称为立体视频。在多视图中,同一场景的两个视频序列由空间偏移相机录制。这两个视频序列在头戴式设备的不同镜头上显示给用户。以这种方式为每只眼睛显示不同的空间偏移序列可以创建3D视频和/或视觉深度的印象。因此,实现多视图的OLS包括两个层(例如,每只眼睛一个层)。但是,当这些层都是同播的时,视频解码器可以使用该推断来推断每个OLS仅包括一个层。这可能会导致错误,因为解码器可能只显示多视图的一个层,或者可能无法继续显示两个层中的任一个层。因此,当所有层是同播的时,每个OLS包括单个层的推断可能会使多视图应用无法在解码器上正确呈现。
本示例包括当视频中的所有层是同播的且不使用层间预测时使视频译码系统能够对多视图视频进行正确解码的机制。当层中没有一个层使用层间预测(例如,所有层是同播的)时,vps_all_independent_layers_flag可以包括在码流中的VPS中,并被设置为1。当该标志被设置为1时,each_layer_is_an_ols_flag在VPS中指示。each_layer_is_an_ols_flag可以被设置为表示每个OLS是否包括单个层或至少一个OLS是否包括多于一个层(例如,以支持多视图)。因此,vps_all_independent_layers_flag和each_layer_is_an_ols_flag可用于支持多视图应用。此外,当出现这种情况时,ols_mode_idc可以在VPS中被设置为2。这将导致OLS的数量和与OLS相关的层被显式地指示。然后,解码器可以使用该信息对包括多视图视频的OLS进行正确解码。这种方法支持纠正错误的同时保证了译码效率。因此,所公开的机制增加了编码器和/或解码器的功能。此外,所公开的机制可以减小码流大小,并因此减少编码器和解码器处的处理器、内存和/或网络资源的使用。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,当表示每个OLS仅包括一个层,并且每个层是所述每个OLS中唯一的输出层时,所述each_layer_is_an_ols_flag被设置为1。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,当表示至少一个OLS包括多于一个层时,所述each_layer_is_an_ols_flag被设置为0。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,当ols_mode_idc等于2时,OLS的总数被显式地指示,与OLS相关联的层被显式地指示,并且当vps_all_independent_layers_flag被设置为1时,并且当所述each_layer_is_an_ols_flag被设置为0时,所述ols_mode_idc被推断为等于2。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述VPS包括被设置为1的vps_all_independent_layers_flag,以表示由所述VPS指定的所有层被独立编码,而不需要层间预测。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述VPS包括vps_max_layers_minus1语法元素,所述vps_max_layers_minus1语法元素表示由所述VPS指定的层的数量,并且当vps_max_layers_minus1大于0时,所述vps_all_independent_layers_flag被指示。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,当ols_mode_idc等于2时,所述VPS包括num_output_layer_sets_minus1,所述num_output_layer_sets_minus1表示由所述VPS指定的OLS的总数。
在一个实施例中,本发明包括一种视频译码设备,所述视频译码设备包括:处理器、与所述处理器耦合的接收器、与所述处理器耦合的存储器和与所述处理器耦合的发送器,其中,所述处理器、所述接收器、所述存储器和所述发送器用于执行根据上述任一方面所述的方法。
在一个实施例中,本发明包括一种非瞬时性计算机可读介质,所述非瞬时性计算机可读介质包括供视频译码设备使用的计算机程序产品,其中,所述计算机程序产品包括存储在所述非瞬时性计算机可读介质中的计算机可执行指令,所述计算机可执行指令在由处理器执行时,使所述视频译码设备执行根据上述任一方面所述的方法。
在一个实施例中,本发明包括一种解码器,所述解码器包括:接收模块,用于接收包括编码图像的一个或多个层和VPS的码流,其中,当由所述VPS指定的所有层被独立编码而不需要层间预测时,each_layer_is_an_ols_flag包括在所述VPS中,所述each_layer_is_an_ols_flag表示每个OLS是否仅包括一个层;解码模块,用于根据所述VPS中的所述each_layer_is_an_ols_flag,对来自OLS的输出层的编码图像进行解码,以生成解码图像;转发模块,用于转发所述解码图像,以作为解码视频序列的一部分显示。
图像层可以用于支持可适性。例如,视频可以编码成多个层。可以在不参考其它层的情况下对层进行编码。这种层被称为同播层。相应地,可以在不参考其它层的情况下对同播层进行解码。又例如,可以使用层间预测对层进行编码。这支持通过仅包括当前层与参考层之间的差异来对当前层进行编码。层可以被组织成OLS。OLS是层集合,包括至少一个输出层和支持对输出层进行解码的任何层。在特定示例中,第一OLS可以包括基本层,而第二OLS可以包括基本层和具有增加特性的增强层。在一个示例中,第一OLS可以被发送给解码器以使视频能够以基本分辨率解码,或者第二OLS可以被传输以使视频能够以更高的增强分辨率解码。因此,视频可以根据用户请求缩放。在一些情况下,不使用可适性,每个层都被编码为同播层。一些系统推断,如果所有层都是同播的,则每个OLS都应包括单个层(因为不使用参考层)。这种推断提高了译码效率,因为指示可以从编码码流中省略。但是,这种推断不支持多视图。多视图也被称为立体视频。在多视图中,同一场景的两个视频序列由空间偏移相机录制。这两个视频序列在头戴式设备的不同镜头上显示给用户。以这种方式为每只眼睛显示不同的空间偏移序列可以创建3D视频和/或视觉深度的印象。因此,实现多视图的OLS包括两个层(例如,每只眼睛一个层)。但是,当这些层都是同播的时,视频解码器可以使用该推断来推断每个OLS仅包括一个层。这可能会导致错误,因为解码器可能只显示多视图的一个层,或者可能无法继续显示两个层中的任一个层。因此,当所有层是同播的时,每个OLS包括单个层的推断可能会使多视图应用无法在解码器上正确呈现。
本示例包括当视频中的所有层是同播的且不使用层间预测时使视频译码系统能够对多视图视频进行正确解码的机制。当层中没有一个层使用层间预测(例如,所有层是同播的)时,vps_all_independent_layers_flag可以包括在码流中的VPS中,并被设置为1。当该标志被设置为1时,each_layer_is_an_ols_flag在VPS中指示。each_layer_is_an_ols_flag可以被设置为表示每个OLS是否包括单个层或至少一个OLS是否包括多于一个层(例如,以支持多视图)。因此,vps_all_independent_layers_flag和each_layer_is_an_ols_flag可用于支持多视图应用。此外,当出现这种情况时,ols_mode_idc可以在VPS中被设置为2。这将导致OLS的数量和与OLS相关的层被显式地指示。然后,解码器可以使用该信息对包括多视图视频的OLS进行正确解码。这种方法支持纠正错误的同时保证了译码效率。因此,所公开的机制增加了编码器和/或解码器的功能。此外,所公开的机制可以减小码流大小,并因此减少编码器和解码器处的处理器、内存和/或网络资源的使用。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述解码器还用于执行根据上述任一方面所述的方法。
在一个实施例中,本发明包括一种编码器,所述编码器包括:编码模块,用于:对包括编码图像的一个或多个层的码流进行编码;将VPS编码到所述码流中,其中,当由所述VPS指定的所有层被独立编码而不需要层间预测时,所述VPS包括each_layer_is_an_ols_flag,所述each_layer_is_an_ols_flag表示每个OLS是否仅包括一个层;存储模块,用于存储所述码流,以发送给解码器。
图像层可以用于支持可适性。例如,视频可以编码成多个层。可以在不参考其它层的情况下对层进行编码。这种层被称为同播层。相应地,可以在不参考其它层的情况下对同播层进行解码。又例如,可以使用层间预测对层进行编码。这支持通过仅包括当前层与参考层之间的差异来对当前层进行编码。层可以被组织成OLS。OLS是层集合,包括至少一个输出层和支持对输出层进行解码的任何层。在特定示例中,第一OLS可以包括基本层,而第二OLS可以包括基本层和具有增加特性的增强层。在一个示例中,第一OLS可以被发送给解码器以使视频能够以基本分辨率解码,或者第二OLS可以被传输以使视频能够以更高的增强分辨率解码。因此,视频可以根据用户请求缩放。在一些情况下,不使用可适性,每个层都被编码为同播层。一些系统推断,如果所有层都是同播的,则每个OLS都应包括单个层(因为不使用参考层)。这种推断提高了译码效率,因为指示可以从编码码流中省略。但是,这种推断不支持多视图。多视图也被称为立体视频。在多视图中,同一场景的两个视频序列由空间偏移相机录制。这两个视频序列在头戴式设备的不同镜头上显示给用户。以这种方式为每只眼睛显示不同的空间偏移序列可以创建3D视频和/或视觉深度的印象。因此,实现多视图的OLS包括两个层(例如,每只眼睛一个层)。但是,当这些层都是同播的时,视频解码器可以使用该推断来推断每个OLS仅包括一个层。这可能会导致错误,因为解码器可能只显示多视图的一个层,或者可能无法继续显示两个层中的任一个层。因此,当所有层是同播的时,每个OLS包括单个层的推断可能会使多视图应用无法在解码器上正确呈现。
本示例包括当视频中的所有层是同播的且不使用层间预测时使视频译码系统能够对多视图视频进行正确解码的机制。当层中没有一个层使用层间预测(例如,所有层是同播的)时,vps_all_independent_layers_flag可以包括在码流中的VPS中,并被设置为1。当该标志被设置为1时,each_layer_is_an_ols_flag在VPS中指示。each_layer_is_an_ols_flag可以被设置为表示每个OLS是否包括单个层或至少一个OLS是否包括多于一个层(例如,以支持多视图)。因此,vps_all_independent_layers_flag和each_layer_is_an_ols_flag可用于支持多视图应用。此外,当出现这种情况时,ols_mode_idc可以在VPS中被设置为2。这将导致OLS的数量和与OLS相关的层被显式地指示。然后,解码器可以使用该信息对包括多视图视频的OLS进行正确解码。这种方法支持纠正错误的同时保证了译码效率。因此,所公开的机制增加了编码器和/或解码器的功能。此外,所公开的机制可以减小码流大小,并因此减少编码器和解码器处的处理器、内存和/或网络资源的使用。
可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述编码器还用于执行根据上述任一方面所述的方法。
为了清楚起见,上述任一实施例可以与上述其它实施例中任何一个或多个组合以创建本发明范围内的新实施例。
从结合附图和权利要求书的以下详细描述中,将更清楚地理解这些和其它特征。
附图说明
为了更全面地理解本发明,现在参考以下结合附图和具体实施方式进行的简要描述,其中,相似的附图标记表示相似的部件。
图1是对视频信号进行译码的示例性方法的流程图。
图2是用于视频译码的示例性编码和解码(编解码)系统的示意图。
图3是示例性视频编码器的示意图。
图4是示例性视频解码器的示意图。
图5是用于层间预测的示例性多层视频序列的示意图。
图6是包括用于多视图中的同播层的示例性多视图序列的示意图。
图7是包括具有用于多视图中的同播层的OLS的示例性码流的示意图。
图8是示例性视频译码设备的示意图。
图9是对具有用于多视图中的同播层的OLS的视频序列进行编码的示例性方法的流程图。
图10是对包括用于多视图中的同播层的OLS的视频序列进行解码的示例性方法的流程图。
图11是对具有用于多视图中的同播层的OLS的视频序列进行译码的示例性系统的示意图。
具体实施方式
首先应当理解,尽管下文提供一个或多个实施例的说明性实现方式,但所公开的系统和/或方法可以使用任意数量的技术来实现,无论这些技术是当前已知的还是现有的。本发明决不应限于下文所说明的所述说明性实施方案、图式和技术,包括本文所说明并描述的示范性设计和实施方案,而是可以在所附权利要求书的范围以及其均等物的完整范围内修改。
以下术语的定义如下所述,除非在本文相反的上下文中使用。具体地,以下定义旨在更加清晰地描述本发明。但是,术语在不同的上下文中可能会有不同的描述。因此,以下定义应当视为补充信息,而不应当视为对此处为这些术语提供的描述的任何其它定义进行限制。
码流是包括视频数据的一系列比特,这些视频数据会被压缩以在编码器与解码器之间传输。编码器是一种用于通过编码过程将视频数据压缩为码流的设备。解码器是一种用于通过解码过程从码流中重建视频数据进行显示的设备。图像是创建帧或帧场的亮度样本的阵列和/或色度样本的阵列。为了清楚讨论,正在被编码或解码的图像可以称为当前图像。
网络抽象层(network abstraction layer,NAL)单元是一种语法结构,包括原始字节序列载荷(raw byte sequence payload,RBSP)(表示数据类型)形式的数据,以及根据需要散布的预防混淆字节。视频编码层(video coding layer,VCL)NAL单元是编码为包括视频数据的NAL单元,视频数据例如图像的编码条带。非VCL NAL单元是包括非视频数据的NAL单元,非视频数据例如支持解码视频数据、执行符合性检查或其它操作的语法和/或参数。层是共享指定特性(例如,共同分辨率、帧率、图像大小等)的VCL NAL单元和相关联的非VCL NAL单元的集合。层的VCL NAL单元可以共享NAL单元头层标识符(nuh_layer_id)的特定值。编码图像是图像的编码表示,在接入单元(access unit,AU)内包括具有NAL单元头层标识符(nuh_layer_id)的特定值的VCL NAL单元,并且包括图像的所有编码树单元(codingtree unit,CTU)。解码图像是通过对编码图像应用解码过程而产生的图像。
输出层集(output layer set,OLS)是层集合,其中一个或多个层被指定为一个或多个输出层。输出层是指定用于输出(例如,输出给显示器)的层。第零个(第0个)OLS是仅包括最低层(具有最低层标识符的层)的OLS,因此仅包括输出层。视频参数集(videoparameter set,VPS)是包括与整个视频相关的参数的数据单元。层间预测是通过参考参考层中的参考图像对当前层中的当前图像进行编码的机制,其中,当前图像和参考图像包括在同一个AU中,并且参考层的nuh_layer_id低于当前层的nuh_layer_id。
每个层是OLS标志(each_layer_is_an_ols_flag)是一个语法元素,用于指示码流中的每个OLS是否包括单个层。OLS模式标识码(ols_mode_idc)是一个语法元素,用于表示与OLS的数量、OLS的层和OLS中的输出层相关的信息。VPS所有独立层标志(vps_all_independent_layers_flag)是一个语法元素,用于指示是否使用层间预测对码流中的任何层进行编码。VPS最大层数减1(vps_max_layers_minus1)是一个语法元素,用于指示由VPS指定的层的数量,因此指示对应的编码视频序列中允许的层的最大数量。输出层集的数量减1(num_output_layer_sets_minus1)是一个语法元素,用于表示由VPS指定的OLS的总数。
本文使用以下缩略语:编码树块(coding tree block,CTB)、编码树单元(codingtree unit,CTU)、编码单元(coding unit,CU)、编码视频序列(coded video sequence,CVS)、联合视频专家组(joint video experts team,JVET)、运动约束分块集(motion-constrained tile set,MCTS)、最大传输单元(maximum transfer unit,MTU)、网络抽象层(network abstraction layer,NAL)、输出层集(output layer set,OLS)、图像顺序编号(picture order count,POC)、原始字节序列载荷(raw byte sequence payload,RBSP)、序列参数集(sequence parameter set,SPS)、视频参数集(video parameter set,VPS)、通用视频编码(versatile video coding,VVC)和工作草案(working draft,WD)。
许多视频压缩技术可以用来减小视频文件的大小,同时最大限度地减少数据丢失。例如,视频压缩技术可以包括执行空间(例如,帧内)预测和/或时间(例如,帧间)预测来减少或去除视频序列中的数据冗余。对于基于块的视频译码,视频条带(例如,视频图像或视频图像的一部分)可以被分割成视频块,这些视频块还可以称为树块(treeblock)、编码树块(coding tree block,CTB)、编码树单元(coding tree unit,CTU)、编码单元(codingunit,CU)和/或编码节点。图像中的经帧内编码(I)条带中的视频块是针对同一图像中的相邻块中的参考样本使用空间预测进行编码的。图像中的经帧间编码的单向预测(P)或双向预测(B)条带中的视频块可以是针对同一图像中的相邻块中的参考样本使用空间预测进行译码的,也可以是针对其它参考图像中的参考样本使用时间预测进行编码的。图像(picture/image)可以称为帧(frame),参考图像可以称为参考帧。空间预测或时间预测会产生表示图像块的预测块。残差数据表示原始图像块与预测块之间的像素差。因此,根据指向构成预测块的参考样本的块的运动矢量和表示编码块与预测块之间的差的残差数据,对经帧间编码块进行编码。经帧内编码块是根据帧内编码模式和所述残差数据进行编码的。为了进一步压缩,残差数据可以从像素域变换到变换域。这些产生可以量化的残差变换系数。量化变换系数最初可以排列为二维阵列。可以扫描量化变换系数,以产生变换系数的一维矢量。熵编码可以用于实现进一步压缩。下文更详细地论述了这些视频压缩技术。
为了确保经编码视频能够被准确地解码,视频根据对应的视频编码标准进行编码和解码。视频编码标准包括国际电信联盟(international telecommunication union,ITU)标准化部门(ITU standardization sector,ITU-T)H.261、国际标准化组织/国际电工委员会(international organization for standardization/internationalelectrotechnical commission,ISO/IEC)运动图像专家组(motion picture expertsgroup,MPEG)-1第2部分、ITU-TH.262或ISO/IEC MPEG-2第2部分、ITU-T H.263、ISO/IECMPEG-4第2部分、高级视频编码(advanced video coding,AVC)(还称为ITU-T H.264或ISO/IEC MPEG-4第10部分)以及高效视频编码(high efficiency video coding,HEVC)(还称为ITU-T H.265或MPEG-H第2部分)。AVC包括可适性视频编码(scalable video coding,SVC)、多视图视频编码(multiview video coding,MVC)和多视图视频编码加深度(multiviewvideo coding plus depth,MVC+D)、三维(three dimension,3D)AVC(three dimensionalAVC,3D-AVC)等扩展版本。HEVC包括可适性HEVC(scalable HEVC,SHVC)、多视图HEVC(multiview HEVC,MV-HEVC)、3D HEVC(3D-HEVC)等扩展版本。ITU-T和ISO/IEC的联合视频专家组(joint video experts team,JVET)已经着手开发一种称为通用视频编码(versatile video coding,VVC)的视频编码标准。VVC包括在WD中,该WD包括JVET-O2001-v14。
图像层可以用于支持可适性。例如,视频可以编码成多个层。可以在不参考其它层的情况下对层进行编码。这种层被称为同播层。相应地,可以在不参考其它层的情况下对同播层进行解码。又例如,可以使用层间预测对层进行编码。这支持通过仅包括当前层与参考层之间的差异来对当前层进行编码。例如,当前层和参考层可以包括通过改变信噪比(signal to noise ratio,SNR)、图像大小、帧率等特征编码的相同视频序列。层可以组织成输出层集(output layer set,OLS)。OLS是层集合,包括至少一个输出层和支持对输出层进行解码的任何层。在特定示例中,第一OLS可以包括基本层,而第二OLS可以包括基本层和具有增加特性的增强层。在特征是图像分辨率的一个示例中,第一OLS可以被发送给解码器以使视频能够以基本分辨率解码,或者第二OLS可以被传输以使视频能够以更高的增强分辨率解码。因此,视频可以根据用户请求缩放。
在一些情况下,不使用可适性,每个层都被编码为同播层。一些系统推断,如果所有层都是同播的,则每个OLS都应包括单个层(因为不使用参考层)。这种推断提高了译码效率,因为指示可以从编码码流中省略。但是,这种推断不支持多视图。多视图也被称为立体视频。在多视图中,同一场景的两个视频序列由空间偏移相机录制。这两个视频序列在头戴式设备的不同镜头上显示给用户。以这种方式为每只眼睛显示不同的空间偏移序列可以创建三维(three dimension,3D)视频和/或视觉深度的印象。因此,实现多视图的OLS包括两个层(例如,每只眼睛一个层)。但是,当这些层都是同播的时,视频解码器可以使用该推断来推断每个OLS仅包括一个层。这可能会导致错误,因为解码器可能只显示多视图的一个层,或者可能无法继续显示两个层中的任一个层。因此,当所有层是同播的时,每个OLS包括单个层的推断可能会使多视图应用无法在解码器上正确呈现。
本文公开了一种当视频中的所有层是同播的并且不使用层间预测时使视频译码系统能够对多视图视频进行正确解码的机制。当层中没有一个层使用层间预测(例如,所有层是同播的)时,VPS所有独立层标志(vps_all_independent_layers_flag)可以包括在码流中的VPS中,并被设置为1。当该标志被设置为1时,每个层是输出层集(output layerset,OLS)标志(each_layer_is_an_ols_flag)在VPS中指示。each_layer_is_an_ols_flag可以被设置为表示每个OLS是否包括单个层或至少一个OLS是否包括多于一个层(例如,以支持多视图)。因此,vps_all_independent_layers_flag和each_layer_is_an_ols_flag可用于支持多视图应用。此外,当出现这种情况时,OLS模式标识码(ols_mode_idc)可以在VPS中被设置为2。这将导致OLS的数量和与OLS相关的层被显式地指示。然后,解码器可以使用该信息对包括多视图视频的OLS进行正确解码。这种方法支持纠正错误的同时保证了译码效率。因此,所公开的机制增加了编码器和/或解码器的功能。此外,所公开的机制可以减小码流大小,并因此减少编码器和解码器处的处理器、内存和/或网络资源的使用。
图1是对视频信号进行译码的示例性操作方法100的流程图。具体地,视频信号是在编码器侧编码的。编码过程通过使用各种机制来压缩视频信号,以减小视频文件大小。文件较小使得压缩视频文件可以发送给用户,同时降低相关带宽开销。然后,解码器对压缩视频文件进行解码,以重建原始视频信号,用于向终端用户显示。解码过程通常与编码过程对应,便于解码器一致地重建视频信号。
在步骤101中,将视频信号输入到编码器中。例如,视频信号可以是存储在存储器中的未压缩视频文件。又例如,视频文件可以由视频捕获设备(例如,摄像机)捕获,并且进行编码以支持视频的直播流传输。视频文件可以包括音频分量和视频分量。视频分量包括一系列图像帧。这些图像帧按顺序观看时,给人以运动的视觉效果。这些帧包括以光表示的像素,在本文中称为亮度分量(或亮度样本),还包括以颜色表示的像素,称为色度分量(或色度样本)。在一些示例中,这些帧还可以包括深度值,以支持三维观看。
在步骤103中,将视频分割成块。分割包括将每一帧中的像素细分成正方形块和/或矩形块进行压缩。例如,在高效视频编码(high efficiency video coding,HEVC)(还称为H.265和MPEG-H第2部分)中,可以先将帧划分成编码树单元(coding tree unit,CTU),这些CTU是预定义大小(例如64×64个像素)的块。这些CTU包括亮度样本和色度样本。编码树可以用于将CTU划分成块,然后重复细分这些块,直到获得支持进一步编码的配置。例如,帧的亮度分量可以被细分,直到各个块包括相对均匀的亮度值。此外,帧的色度分量可以被细分,直到各个块包括相对均匀的色值。因此,分割机制因视频帧的内容而异。
在步骤105中,使用各种压缩机制对在步骤103中分割得到的图像块进行压缩。例如,可以使用帧间预测和/或帧内预测。帧间预测是为了利用一般场景中的对象往往出现在连续帧中这一事实而设计的。因此,描述参考帧中的对象的块不需要在相邻帧中进行重复描述。具体地,一个对象(例如一张桌子)可以在多个帧中保持在固定位置上。因此,该桌子被描述一次,而且相邻帧可以重新参考该参考帧。模式匹配机制可以用于在多个帧上匹配对象。此外,由于对象移动或相机移动等原因,移动对象可以跨多个帧表示。在一个具体示例中,视频可以在多个帧上显示跨屏幕移动的汽车。运动矢量可以用于描述这种移动。运动矢量是一个二维矢量,提供对象在一个帧中的坐标到该对象在参考帧中的坐标的偏移。因此,帧间预测可以将当前帧中的图像块编码为运动矢量集,表示当前帧中的图像块与参考帧中的对应块的偏移。
帧内预测对公共帧中的块进行编码。帧内预测利用亮度分量和色度分量往往聚集在一个帧中这一事实。例如,一棵树某个部分的一片绿色往往与类似的几片绿色相邻。帧内预测使用多种方向性预测模式(例如,HEVC中有33种)、平面模式和直流(direct current,DC)模式。这些方向性模式表示当前块的样本与对应方向上的相邻块的样本相似/相同。平面模式表示一行/列(例如平面)上的一系列块可以根据该行的边缘上的相邻块进行插值。平面模式实际上通过使用变化值的相对恒定的斜率表示光/颜色跨行/列的平稳过渡。DC模式用于边界平滑,并表示块与所有相邻块的样本的平均值相似/相同,这些相邻块与方向性预测模式的角度方向相关。因此,帧内预测块可以将图像块表示为各种关系预测模式值而不是表示为实际值。此外,帧间预测块可以将图像块表示为运动矢量值而不是表示为实际值。在任一种情况下,预测块在一些情况下可能都无法准确表示图像块。所有差值都存储在残差块中。变换可以应用于残差块以进一步压缩文件。
在步骤107中,可以应用各种滤波技术。在HEVC中,滤波器是根据环内滤波方案应用的。上文描述的基于块的预测可能会在解码器侧产生块状图像。此外,基于块的预测方案可以对块进行编码,然后重建经编码块,以便后续用作参考块。环内滤波方案迭代地将噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和样本自适应偏移(sample adaptiveoffset,SAO)滤波器应用于块/帧。这些滤波器减少了块伪影,从而可以准确地重建经编码文件。此外,这些滤波器减少了重建参考块中的伪影,使得伪影不太可能在根据重建参考块编码的后续块中产生其它伪影。
一旦视频信号完成分割、压缩和滤波,则在步骤109中,将所得数据编码到码流中。码流包括上文描述的数据以及支持在解码器侧进行适当的视频信号重建所需要的任何指示数据。例如,这些数据可以包括分割数据、预测数据、残差块和提供译码指令给解码器的各种标志。码流可以存储在存储器中,以便在请求时发送给解码器。码流还可以广播和/或组播到多个解码器。创建码流是一个迭代过程。因此,步骤101、步骤103、步骤105、步骤107和步骤109可以在多个帧和块中连续和/或同时执行。图1所示的顺序是为了清楚和便于描述而呈现的,并非旨在将视频译码过程限制于特定顺序。
在步骤111中,解码器接收码流并开始解码过程。具体地,解码器使用熵解码方案将码流转换为对应的语法数据和视频数据。在步骤111中,解码器使用码流中的语法数据来确定帧的分割部分。分割应该与步骤103中的块分割的结果匹配。下面描述在步骤111中使用的熵编码/解码。编码器在压缩过程中做出许多选择,例如,根据一个或多个输入图像中的值的空间定位从几个可能选择中选择块分割方案。指示确切的选择可能会使用大量的位元(bin)。本文所使用的“位元”是一个作为变量的二进制值(例如,可能因内容而异的比特值)。熵编码使得编码器丢弃任何明显不适合特定情况的选项,从而留后一组可用选项。然后,为每个可用选项分配一个码字。码字的长度取决于可用选项的数量(例如,一个二元符号对应两个选项,两个二元符号对应三到四个选项,以此类推)。然后,编码器对所选选项的码字进行编码。这种方案减小了码字,这是因为码字与预期的一样大,从而唯一地指示从可允许选项的小子集中进行选择,而不是唯一地指示从所有可能选项的可能大集合中进行选择。然后,解码器通过以与编码器类似的方式确定可允许选项集对该选择进行解码。通过确定可允许选项集,解码器可以读取码字并确定编码器做出的选择。
在步骤113中,解码器执行块解码。具体地,解码器使用逆变换,以生成残差块。然后,解码器使用残差块和对应的预测块,以根据分割来重建图像块。预测块可以包括编码器在步骤105中生成的帧内预测块和帧间预测块。接着,根据在步骤111中确定的分割数据将重建图像块放置在重建视频信号的帧中。还可以通过上文描述的熵编码在码流中指示用于步骤113的语法。
在步骤115中,以类似于编码器处的步骤107的方式对重建视频信号的帧执行滤波。例如,噪声抑制滤波器、去块效应滤波器、自适应环路滤波器和SAO滤波器可以应用于帧,以去除块伪影。一旦对帧进行了滤波,则在步骤117中,可以将视频信号输出到显示器,以供终端用户观看。
图2是用于视频译码的示例性编码和解码(编解码)系统200的示意图。具体地,编解码系统200提供支持实现操作方法100的功能。编解码系统200广义地用于描述编码器和解码器侧都使用的组件。编解码系统200接收视频信号并对视频信号进行分割,如结合操作方法100中的步骤101和步骤103所述,得到分割后的视频信号201。然后,编解码系统200在充当编码器时将分割后的视频信号201压缩到经编码码流中,如结合方法100中的步骤105、步骤107和步骤109所述。编解码系统200在充当解码器时从码流中生成输出视频信号,如结合操作方法100中的步骤111、步骤113、步骤115和步骤117所述。编解码系统200包括通用译码器控制组件211、变换缩放和量化组件213、帧内估计组件215、帧内预测组件217、运动补偿组件219、运动估计组件221、缩放和逆变换组件229、滤波器控制分析组件227、环内滤波器组件225、解码图像缓冲区组件223以及标头格式和上下文自适应二进制算术编码(context adaptive binary arithmetic coding,CABAC)组件231。这些组件如图所示耦合。在图2中,黑线表示待编码/解码数据的移动,而虚线表示控制其它组件操作的控制数据的移动。编解码系统200中的组件都可以存在于编码器中。解码器可以包括编解码系统200中的组件的子集。例如,解码器可以包括帧内预测组件217、运动补偿组件219、缩放和逆变换组件229、环内滤波器组件225以及解码图像缓冲区组件223。下面对这些组件进行描述。
分割后的视频信号201是捕获到的已经通过编码树分割成像素块的视频序列。编码树使用各种划分模式将像素块细分成较小的像素块。然后,这些块可以进一步细分成较小的块。这些块可以称为编码树上的节点。较大的父节点划分成较小的子节点。节点进行细分的次数称为节点/编码树的深度。在一些情况下,划分得到的块可以包括在编码单元(coding unit,CU)中。例如,CU可以是CTU的子部分,包括亮度块、一个或多个红色差色度(Cr)块和一个或多个蓝色差色度(Cb)块以及CU的对应语法指令。划分模式可以包括二叉树(binary tree,BT)、三叉树(triple tree,TT)和四叉树(quad tree,QT),它们用于根据所使用的划分模式将节点分别分割成不同形状的2个、3个或4个子节点。将分割后的视频信号201转发给通用译码器控制组件211、变换缩放和量化组件213、帧内估计组件215、滤波器控制分析组件227和运动估计组件221进行压缩。
通用译码器控制组件211用于根据应用约束条件做出与将视频序列中的图像编码到码流中相关的决策。例如,通用译码器控制组件211管理码率/码流大小相对于重建质量的优化。这些决定可以根据存储空间/带宽可用性和图像分辨率请求做出。通用译码器控制组件211还根据传输速度来管理缓冲区利用率,以缓解缓存欠载和超载问题。为了解决这些问题,通用译码器控制组件211管理由其它组件进行的分割、预测和滤波。例如,通用译码器控制组件211可以动态提高压缩复杂度以提高分辨率和增加带宽利用率,或者降低压缩复杂度以降低分辨率和带宽利用率。因此,通用译码器控制组件211控制编解码系统200中的其它组件来平衡视频信号重建质量与码率问题。通用译码器控制组件211生成控制数据,这些控制数据用于控制其它组件的操作。还将控制数据转发给标头格式和CABAC组件231,以编码到码流中,从而指示解码器进行解码使用的参数。
还将分割后的视频信号201发送给运动估计组件221和运动补偿组件219进行帧间预测。分割后的视频信号201的帧或条带可以分成多个视频块。运动估计组件221和运动补偿组件219相对于一个或多个参考帧中的一个或多个块对所接收到的视频块执行帧间预测译码,以提供时间预测。编解码系统200可以执行多个译码回合,以便为每个视频数据块选择合适的译码模式,等等。
运动估计组件221和运动补偿组件219可以高度集成,但出于概念目的,单独说明。由运动估计组件221执行的运动估计是生成运动矢量的过程,其中,这些运动矢量用于估计视频块的运动。例如,运动矢量可以表示经译码对象相对于预测块的位移。预测块是被发现在像素差方面与待译码块高度匹配的块。预测块还可以称为参考块。这种像素差可以通过绝对差异和(sum of absolute difference,SAD)、平方差异和(sum of squaredifference,SSD)或其它差异度量来确定。HEVC使用若干编码对象,包括CTU、编码树块(coding tree block,CTB)和CU。例如,CTU可以分成CTB,CTB然后分成CB,CB包括在CU中。CU可以被编码为包括预测数据的预测单元(prediction unit,PU)和/或包括CU的变换残差数据的变换单元(transform unit,TU)。运动估计组件221使用率失真分析作为率失真优化过程的一部分来生成运动矢量、PU和TU。例如,运动估计组件221可以确定当前块/帧的多个参考块、多个运动矢量等,并且可以选择具有最佳率失真特性的参考块、运动矢量等。最佳率失真特性平衡了视频重建的质量(例如,压缩造成的数据丢失量)和译码效率(例如,最终编码的大小)。
在一些示例中,编解码系统200可以计算存储在解码图像缓冲区组件223中的参考图像的子整数像素位置的值。例如,视频编解码系统200可以对参考图像的四分之一像素位置、八分之一像素位置或其它分数像素位置的值进行插值。因此,运动估计组件221可以相对于整像素位置和分数像素位置执行运动搜索,并输出具有分数像素精度的运动矢量。运动估计组件221通过将PU的位置与参考图像的预测块的位置进行比较,计算经帧间编码条带中的视频块的PU的运动矢量。运动估计组件221将计算到的运动矢量作为运动数据输出到标头格式和CABAC组件231进行编码,并作为运动数据输出到运动补偿组件219。
运动补偿组件219执行的运动补偿可以涉及根据运动估计组件221所确定的运动矢量获取或生成预测块。同样,在一些示例中,运动估计组件221和运动补偿组件219可以在功能上集成。在接收到当前视频块的PU的运动矢量时,运动补偿组件219可以定位运动矢量指向的预测块。然后,从正被译码的当前视频块的像素值中减去预测块的像素值,得到像素差,从而形成残差视频块。通常,运动估计组件221相对于亮度分量执行运动估计,运动补偿组件219将根据亮度分量计算得到的运动矢量用于色度分量和亮度分量。将预测块和残差块转发到变换缩放和量化组件213。
还将分割后的视频信号201发送给帧内估计组件215和帧内预测组件217。与运动估计组件221和运动补偿组件219一样,帧内估计组件215和帧内预测组件217可以高度集成,但出于概念目的,单独说明。帧内估计组件215和帧内预测组件217相对于当前帧中的各块对当前块进行帧内预测,以替代如上所述的由运动估计组件221和运动补偿组件219在各帧之间执行的帧间预测。具体地,帧内估计组件215确定帧内预测模式对当前块进行编码。在一些示例中,帧内估计组件215从多个测试的帧内预测模式中选择合适的帧内预测模式来对当前块进行编码。然后,将选定的帧内预测模式转发给标头格式和CABAC组件231进行编码。
例如,帧内估计组件215对各种测试的帧内预测模式进行率失真分析来计算率失真值,并在测试的模式中选择具有最佳率失真特性的帧内预测模式。率失真分析通常确定经编码块与经编码以产生经编码块的原始未编码块之间的失真(或误差)量,以及确定用于产生经编码块的码率(例如,比特数)。帧内估计组件215根据各种经编码块的失真和速率计算比率,以确定表现出块的最佳率失真值的帧内预测模式。另外,帧内估计组件215可以用于根据率失真优化(rate-distortion optimization,RDO),使用深度建模模式(depthmodeling mode,DMM)对深度图像的深度块进行译码。
帧内预测组件217在编码器上实现时可以根据由帧内估计组件215确定的选定帧内预测模式从预测块中生成残差块,或者在解码器上实现时,可以从码流中读取残差块。残差块包括预测块与原始块之间的差值,表示为矩阵。然后,将残差块转发给变换缩放和量化组件213。帧内估计组件215和帧内预测组件217可以对亮度分量和色度分量进行操作。
变换缩放和量化组件213用于进一步压缩残差块。变换缩放和量化组件213将离散余弦变换(discrete cosine transform,DCT)、离散正弦变换(discrete sine transform,DST)等变换或者进行概念上类似的变换应用于残差块,从而产生包括残差变换系数值的视频块。还可以使用小波变换、整数变换、子频带变换或其它类型的变换。变换可以将残差信息从像素值域转换到变换域,例如频域。变换缩放和量化组件213还用于根据频率等对变换残差信息进行缩放。这种缩放涉及将缩放因子应用于残差信息,以便在不同的粒度下量化不同的频率信息,这可能会影响重建视频的最终视觉质量。变换缩放和量化组件213还用于量化变换系数以进一步降低码率。量化过程可以减小与部分或全部系数关联的位深度。量化程度可以通过调整量化参数来修改。在一些示例中,变换缩放和量化组件213随后可以对包括量化变换系数的矩阵执行扫描。将量化变换系数转发给标头格式和CABAC组件231,以编码到码流中。
缩放和逆变换组件229进行与变换缩放和量化组件213相反的操作以支持运动估计。缩放和逆变换组件229应用逆缩放、逆变换和/或反量化以重建像素域中的残差块,例如,后续用作参考块。该参考块可以成为另一当前块的预测块。运动估计组件221和/或运动补偿组件219可以通过将残差块添加回对应的预测块来计算参考块,以用于后续块/帧的运动估计。将滤波器应用于重建参考块,以减少在缩放、量化和变换期间产生的伪影。当预测后续块时,这些伪影可能会使预测不准确(并产生额外的伪影)。
滤波器控制分析组件227和环内滤波器组件225将滤波器应用于残差块和/或重建图像块。例如,可以将来自缩放和逆变换组件229的变换残差块与来自帧内预测组件217和/或运动补偿组件219的对应预测块组合以重建原始图像块。然后,可以将滤波器应用于重建图像块。在一些示例中,滤波器可以转而应用于残差块。与图2中的其它组件一样,滤波器控制分析组件227和环内滤波器组件225高度集成且可以一起实现,但出于概念目的单独描述。将应用于重建参考块的滤波器应用于特定空间区域,这些滤波器包括多个参数以调整使用这些滤波器的方式。滤波器控制分析组件227对重建参考块进行分析,以确定需要使用这些滤波器的位置并设置对应的参数。将这些数据作为滤波器控制数据转发给标头格式和CABAC组件231进行编码。环内滤波器组件225根据滤波器控制数据应用这些滤波器。这些滤波器可以包括去块效应滤波器、噪声抑制滤波器、SAO滤波器和自适应环路滤波器。这些滤波器可以根据示例应用于空域/像素域(例如,针对重建像素块)或频域中。
当作为编码器操作时,将经滤波的重建图像块、残差块和/或预测块存储在解码图像缓冲区组件223中,以供后续用于运动估计,如上所述。当作为解码器操作时,解码图像缓冲区组件223存储经重建和经滤波的块并将其作为输出视频信号的一部分转发给显示器。解码图像缓冲区组件223可以是任何能够存储预测块、残差块和/或重建图像块的存储设备。
标头格式和CABAC组件231从编解码系统200的各种组件接收数据,并将这些数据编码到经编码码流中,以发送给解码器。具体地,标头格式和CABAC组件231生成各种标头以对控制数据(例如,通用控制数据和滤波器控制数据)进行编码。此外,将预测数据(包括帧内预测数据和运动数据)以及量化变换系数数据形式的残差数据都编码到码流中。最终的码流包括解码器重建原始分割后的视频信号201所需要的所有信息。这些信息还可以包括帧内预测模式索引表(还称为码字映射表)、各种块的编码上下文的定义、最可能帧内预测模式的指示、分割信息的指示等。这些数据可以使用熵编码进行编码。例如,这些信息可以通过上下文自适应可变长度编码(context adaptive variable length coding,CAVLC)、CABAC、基于语法的上下文自适应二进制算术编码(syntax-based context-adaptivebinary arithmetic coding,SBAC)、概率区间分割熵(probability intervalpartitioning entropy,PIPE)编码或另一熵编码技术来编码。在熵编码之后,可以将经译码码流发送给另一设备(例如,视频解码器)或存档以供后续发送或检索。
图3是示例性视频编码器300的框图。视频编码器300可以用于实现编解码系统200的编码功能和/或实现操作方法100中的步骤101、步骤103、步骤105、步骤107和/或步骤109。编码器300对输入视频信号进行分割,得到分割后的视频信号301,其基本上类似于分割后的视频信号201。然后,通过编码器300中的组件压缩分割后的视频信号301并编码到码流中。
具体地,将分割后的视频信号301转发给帧内预测组件317进行帧内预测。帧内预测组件317可以基本上类似于帧内估计组件215和帧内预测组件217。还将分割后的视频信号301转发给运动补偿组件321,以根据解码图像缓冲区组件323中的参考块进行帧间预测。运动补偿组件321可以基本上类似于运动估计组件221和运动补偿组件219。将来自帧内预测组件317和运动补偿组件321的预测块和残差块转发给变换和量化组件313进行残差块的变换和量化。变换和量化组件313可以基本上类似于变换缩放和量化组件213。将经变换和量化的残差块和对应的预测块(与相关的控制数据一起)转发给熵编码组件331,以编码在码流中。熵编码组件331可以基本上类似于标头格式和CABAC组件231。
还将经变换和量化的残差块和/或对应的预测块从变换和量化组件313转发给逆变换和反量化组件329,以重建为参考块,供运动补偿组件321使用。逆变换和反量化组件329可以基本上类似于缩放和逆变换组件229。根据示例,环内滤波器组件325中的环内滤波器还应用于残差块和/或重建参考块。环内滤波器组件325可以基本上类似于滤波器控制分析组件227和环内滤波器组件225。环内滤波器组件325可以包括多个滤波器,如结合环内滤波器组件225所述。然后,将经滤波的块存储在解码图像缓冲区组件323中,以作为参考块供运动补偿组件321使用。解码图像缓冲区组件323可以基本上类似于解码图像缓冲区组件223。
图4是示例性视频解码器400的框图。视频解码器400可以用于实现编解码系统200的解码功能和/或实现操作方法100中的步骤111、步骤113、步骤115和/或步骤117。例如,解码器400从编码器300接收码流,并根据所述码流生成重建输出视频信号,以向终端用户显示。
码流由熵解码组件433接收。熵解码组件433用于执行熵解码方案,例如CAVLC、CABAC、SBAC、PIPE解码或其它熵解码技术。例如,熵解码组件433可以使用头信息来提供上下文以解析在码流中编码为码字的附加数据。解码信息包括对视频信号进行解码所需的任何信息,例如,通用控制数据、滤波器控制数据、分割信息、运动数据、预测数据和残差块中的量化变换系数。将量化变换系数转发给逆变换和反量化组件429,以重建成残差块。逆变换和反量化组件429可以类似于逆变换和反量化组件329。
将重建残差块和/或预测块转发给帧内预测组件417,以根据帧内预测操作重建为图像块。帧内预测组件417可以类似于帧内估计组件215和帧内预测组件217。具体地,帧内预测组件417使用预测模式来定位帧中的参考块,并将残差块添加到上述结果中以重建帧内预测图像块。将重建帧内预测图像块和/或残差块以及对应的帧间预测数据通过环内滤波器组件425转发给解码图像缓冲区组件423。解码图像缓冲区组件423和环内滤波器组件425可以基本上分别类似于解码图像缓冲区组件223和环内滤波器组件225。环内滤波器组件425对重建图像块、残差块和/或预测块进行滤波。这些信息存储在解码图像缓冲区组件423中。将来自解码图像缓冲区组件423的重建图像块转发给运动补偿组件421进行帧间预测。运动补偿组件421可以基本上类似于运动估计组件221和/或运动补偿组件219。具体地,运动补偿组件421使用参考块的运动矢量来生成预测块,并将残差块应用于上述结果以重建图像块。还可以通过环内滤波器组件425将所得到的重建块转发给解码图像缓冲区组件423。解码图像缓冲区组件423继续存储其它重建图像块。这些重建图像块可以通过分割信息重建为帧。这些帧还可以放置在一个序列中。该序列作为重建输出视频信号输出到显示器。
图5是用于层间预测521的示例性多层视频序列500的示意图。例如根据方法100,多层视频序列500可以由编码器(例如编解码系统200和/或编码器300)编码,并由解码器(例如编解码系统200和/或解码器400)解码。包括多层视频序列500以描述编码视频序列中的层的示例性应用。多层视频序列500是使用多个层(例如层N 531和层N+1 532)的任何视频序列。
在一个示例中,多层视频序列500可以使用层间预测521。层间预测521应用于不同层中的图像511、512、513和514与图像515、516、517和518之间。在所示的示例中,图像511、512、513和514是层N+1 532的一部分,而图像515、516、517和518是层N 531的一部分。层(例如层N 531和/或层N+1 532)是一组图像,这些图像都与类似的特征值(例如类似的大小、质量、分辨率、信噪比、能力等)相关联。层可以正式定义为VCL NAL单元和共享同一nuh_layer_id的相关联的非VCL NAL单元的集合。VCL NAL单元是编码为包括视频数据的NAL单元,视频数据例如图像的编码条带。非VCL NAL单元是包括非视频数据的NAL单元,非视频数据例如支持解码视频数据、执行符合性检查或其它操作的语法和/或参数。
在示例性图示中,层N+1 532与比层N 531更大的图像大小相关联。因此,在本示例中,层N+1 532中的图像511、512、513和514比层N531中的图像515、516、517和518大(例如,高度和宽度更大,因此样本更多)。但是,这些图像可以根据其它特征分布在层N+1 532和层N531之间。虽然只示出了两层:层N+1 532和层N 531,但一组图像可以根据关联特征划分成任意数量的层。层N+1 532和层N 531也可以用层标识符(identifier,ID)表示。层ID是与图像相关联的数据项,并表示图像是所指示层的一部分。因此,图像511至518中的每个图像可以与对应的层ID关联,以表示层N+1 532或层N531中的哪个层包括对应的图像。例如,层ID可以包括NAL单元头层标识符(nuh_layer_id),该NAL单元头层标识符是一个语法元素,表示包括NAL单元(例如,包括层中图像的条带和/或参数)的层的标识符。与较低质量/码流大小相关联的层(例如层N 531)通常被分配低层ID,并被称为低层。此外,与较高质量/码流大小相关联的层(例如层N+1 532)通常被分配高层ID,并被称为高层。
不同层531和532中的图像511至518用于交替显示。在具体示例中,如果需要较小的图像,则解码器可以在当前显示时间解码并显示图像515,或者如果需要较大的图像,则解码器可以在当前显示时间解码并显示图像511。因此,高层N+1 532中的图像511至514与低层N 531中的对应图像515至518包括基本上相同的图像数据(虽然图像大小不同)。具体地,图像511与图像515包括基本上相同的图像数据,图像512与图像516包括基本上相同的图像数据,以此类推。
图像511至518可以通过参考同一层N 531或N+1 532中的其它图像511至518进行译码。参考同一层中的另一个图像对图像进行译码会产生帧间预测523。帧间预测523由实线箭头表示。例如,图像513可以通过将层N+1 532中的图像511、512和/或514中的一个或两个图像作为参考的帧间预测523来译码,其中,单向帧间预测使用一个图像作为参考,和/或双向帧间预测使用两个图像作为参考。此外,图像517可以通过将层N 531中的图像515、516和/或518中的一个或两个图像作为参考的帧间预测523来译码,其中,单向帧间预测使用一个图像作为参考,和/或双向帧间预测使用两个图像作为参考。当在执行帧间预测523时,将一个图像作为同一层中另一个图像的参考时,该图像可以被称为参考图像。例如,图像512可以是用于根据帧间预测523对图像513进行译码的参考图像。在多层上下文中,帧间预测523也可以被称为层内预测。因此,帧间预测523是通过参考与当前图像不同的参考图像中的指示样本对当前图像的样本进行译码的机制,其中,参考图像和当前图像位于同一层中。
图像511至518也可以通过参考不同层中的其它图像511至518进行译码。这个过程称为层间预测521,由虚线箭头表示。层间预测521是通过参考一个参考图像中的指示样本对当前图像的样本进行译码的机制,其中,当前图像和参考图像在不同的层中,因此具有不同的层ID。例如,低层N 531中的图像可以作为对高层N+1 532中的对应图像进行译码的参考图像。在具体示例中,图像511可以根据层间预测521通过参考图像515进行译码。在这种情况下,图像515被用作层间参考图像。层间参考图像是用于层间预测521的参考图像。在大多数情况下,对层间预测521进行了约束,使得当前图像(例如,图像511)只能使用同一AU中包括的且位于低层的一个或多个层间参考图像,例如,图像515。AU是与视频序列中的特定输出时间相关联的图像的集合,因此AU可以包括多达每层一个图像。当多个层(例如,多于两个层)可用时,层间预测521可以根据层级比当前图像低的多个层间参考图像对当前图像进行编码/解码。
视频编码器可以使用多层视频序列500来通过帧间预测523和层间预测521的许多不同组合和/或排列对图像511至518进行编码。例如,图像515可以根据帧内预测进行译码。然后,通过将图像515用作参考图像,图像516至518可以根据帧间预测523进行译码。此外,通过将图像515作为层间参考图像,图像511可以根据层间预测521进行译码。然后,通过将图像511用作参考图像,图像512至514可以根据帧间预测523进行译码。因此,参考图像可以作为不同译码机制的单层参考图像和层间参考图像。通过根据低层N 531图像对高层N+1532图像进行译码,高层N+1 532可以避免使用帧内预测,帧内预测的译码效率比帧间预测523和层间预测521的译码效率低得多。因此,译码效率低的帧内预测只限于最小/最低质量的图像,因此只限于对最少量的视频数据进行译码。用作参考图像和/或层间参考图像的图像可以在参考图像列表结构中包括的一个或多个参考图像列表的条目中指示。
为了执行这类操作,层(例如层N 531和层N+1 532)可以包括在OLS 525中。OLS525是层集合,其中,一个或多个层被指定为输出层。输出层是指定用于输出(例如,输出给显示器)的层。例如,层N531可以仅被包括用于支持层间预测521,并且可能永远不会被输出。在这种情况下,N+1532基于层N531进行解码层并输出。在这种情况下,OLS 525包括层N+1532作为输出层。OLS 525可以包括许多不同组合的层。例如,OLS 525中的输出层可以根据基于一个、两个或多个低层的层间预测521进行译码。此外,OLS 525可以包括多于一个输出层。因此,OLS 525可以包括一个或多个输出层和重建输出层所需的任何支持层。多层视频序列500可以通过使用许多不同的OLS 525来译码,其中,每个OLS 525使用不同组合的层。
在具体示例中,层间预测521可用于支持可适性。例如,视频可以译码成基本层(如层N 531)和若干增强层(如层N+1 532、层N+2、层N+3等),这些层是根据层间预测521译码的。视频序列可以针对若干可适性特性(如分辨率、帧率、图像大小等)编码。然后,可以针对每个允许的特征创建OLS 525。例如,用于第一分辨率的OLS 525可以仅包括层N 531,用于第二分辨率的OLS 525可以包括层N 531和层N+1 532,用于第三分辨率的OLS可以包括层N531、层N+1 532、层N+2等。这样,可以传输OLS 525以使解码器能够基于网络条件、硬件约束等对所需的多层视频序列500的任何版本进行解码。
图6是包括用于多视图中的同播层631、632、633和634的示例性多视图序列600的示意图。多视图序列600是多层视频序列500的一种类型。因此,例如根据方法100,多视图序列600可以由编码器(例如,编解码系统200和/或编码器300)编码,并由解码器(例如,编解码系统200和/或解码器400)解码。
多视图视频也可以称为立体视频。在多视图中,视频序列被从多个相机角度同时捕获到单个视频流中。例如,可以使用一对空间偏移相机来捕获视频。每个相机从不同的角度捕获视频。这形成了对同一主题的一对视图。第一视图可以呈现给用户的右眼,第二视图可以呈现给用户的左眼。例如,这可以通过使用包括左眼显示器和单独的右眼显示器的头戴显示器(head mounted display,HMD)来实现。从不同角度显示同一主题的一对流,创造了视觉深度的印象,从而创造了3D观看体验。
为了实现多视图,视频可以被编码到多个OLS中,例如,OLS 625和OLS 626,它们类似于OLS 525。每个视图被编码到层中,例如,层631、632、633和634,它们可以类似于层N531。在具体示例中,右眼视图可以编码到层631中,左眼视图可以编码到层632中。然后,层631和632可以包括在OLS 625中。这样,OLS 625可以被发送给解码器,其中,层631和632标记为输出层。然后,解码器可以解码和显示层631和632。因此,OLS 625提供足够的数据以能够表示多视图视频。与其它类型的视频一样,多视图视频可以被编码成若干表示,以支持不同的显示设备、不同的网络条件等。因此,OLS 626基本上类似于OLS 625,但包括经编码以实现不同特征的视频。例如,层633可以基本上类似于层631,层634可以基本上类似于层632。但是,层633和634可以具有与层631和632不同的特征。在具体示例中,层633和634可以以与层631和632不同的分辨率、帧率、屏幕大小等编码。在具体示例中,如果需要第一图像分辨率,OLS 625可以被发送给解码器,如果需要第二图像分辨率,OLS 626可以被发送给解码器。
在一些情况下,不使用可适性。不使用层间预测的层称为同播层。同播层可以在不参考另一层的情况下完全解码。例如,如图所示的层631至634都是同播层,因为它们不依赖于任何参考层。该配置可能会在一些视频译码系统中导致错误。
例如,一些视频译码系统可以用于推断当所有层是同播的时,每个OLS包括单个层。在一些情况下,这种推断是合理的。例如,当标准视频不使用可适性时,系统可以假设可以在没有任何其它层的情况下显示每个同播层,因此OLS应仅包括一层。这种推断可能会使多视图无法正常运行。如图所示,OLS 625和626分别包括两个层631和632以及层633和634。在这种情况下,解码器可能不确定要解码哪个层,并且可能不会解码和显示这两个层,因为预期只有一个层。
本发明通过在码流中使用each_layer_is_an_ols_flag来解决这个问题。具体地,当所有层631至634是同播的时,如vps_all_independent_layers_flag所表示,each_layer_is_an_ols_flag被指示。each_layer_is_an_ols_flag表示每个OLS是否包括单个层,或者任何OLS(例如,OLS 625和626)是否包括多于一个层。这使多视图序列600能够被正确解码。此外,ols_mode_idc可以被设置为表示OLS 625和626的数量以及与层631至634相关的信息应被显式地指示(例如,指示层631至634中的哪些层是输出层)。这些标志为解码器提供了足够的信息,以便使用多视图正确解码和显示OLS 625和/或626。需要说明的是,each_layer_is_an_ols_flag、vps_all_independent_layers_flag和ols_mode_idc是根据VVC标准化使用的命名法来命名的。为了讨论的一致性和清晰性,此处包括这些名称。但是,在不脱离本发明的范围的情况下,这些语法元素可以被称为其它名称。
图7是包括具有用于多视图中的同播层的OLS的示例性码流700的示意图。例如,码流700可以由编解码系统200和/或编码器300生成,以供编解码系统200和/或解码器400根据方法100进行解码。此外,码流700可以包括经译码的多层视频序列500和/或多视图序列600。
码流700包括VPS 711、一个或多个序列参数集(sequence parameter set,SPS)713、多个图像参数集(picture parameter set,PPS)715、多个条带头717和图像数据720。VPS 711包括与整个码流700相关的数据。例如,VPS 711可以包括码流700中使用的数据相关的OLS、层和/或子层。SPS 713包括码流700中包括的编码视频序列中的所有图像共有的序列数据。例如,每个层可以包括一个或多个编码视频序列,并且每个编码视频序列可以参考SPS 713以获取对应的参数。SPS 713中的参数可以包括图像大小、位深度、编码工具参数、码率限制等。需要说明的是,虽然每个序列参考SPS 713,但是在一些示例中,单个SPS713可以包括用于多个序列的数据。PPS 715包括应用于整个图像的参数。因此,视频序列中的每个图像可以参考PPS 715。需要说明的是,虽然每个图像参考PPS 715,但是在一些示例中,单个PPS 715可以包括用于多个图像的数据。例如,可以根据类似的参数对多个类似的图像进行译码。在这种情况下,单个PPS 715可以包括用于这些类似图像的数据。PPS 715可以表示可用于对应图像中的条带的编码工具、量化参数、偏移等。
条带头717包括图像725中每个条带727的特定参数。因此,视频序列中的每个条带727可以有一个条带头717。条带头717可以包括条带类型信息、POC、参考图像列表、预测权重、分块入口点、去块效应滤波参数等。需要说明的是,在一些示例中,码流700还可以包括图像头,图像头是一个语法结构,包括应用于单个图像中所有条带727的参数。因此,图像头和条带头717可以在某些上下文中互换使用。例如,条带头717和图像头可以使用一些相同的参数,这取决于这些参数是否是图像725中所有条带727共有的。
图像数据720包括根据帧间预测和/或帧内预测编码的视频数据以及对应的经变换和量化的残差数据。例如,图像数据720可以包括图像725的层723。层723可以被组织成OLS 721。OLS 721可以基本上类似于OLS 525、625和/或626。具体地,OLS 721是层723的集合,其中,一个或多个层723被指定为一个或多个输出层。例如,码流700可以经译码以包括若干OLS 721,其中视频以不同分辨率、帧率、图像725大小等译码。根据解码器的请求,子码流提取过程可以将除请求的OLS 721之外的所有OLS 721从码流700中移除。然后,编码器可以将仅包括所请求的OLS 721的码流700发送给解码器,因此仅将满足请求的标准的视频发送给解码器。
层723可以基本上类似于层N 531、层N+1532和/或层631、632、633和/或634。层723通常是编码图像725的集合。层723可以正式定义为VCL NAL单元的集合,当解码时,这些VCLNAL单元共享指定特性(例如,共同分辨率、帧率、图像大小等)。层723还包括相关联的非VCLNAL单元,以支持VCLNAL单元的解码。层723的VCLNAL单元可以共享nuh_layer_id的特定值。层723可以是在没有层间预测的情况下编码的同播层,或者是根据层间预测编码的层723,如分别参考图6和图5所论述。
图像725是创建帧或帧场的亮度样本的阵列和/或色度样本的阵列。例如,图像725可以是编码图像,其被输出以用于显示或用于支持一个或多个其它图像725的编码以用于输出。图像725可以包括VCL NAL单元的集合。图像725包括一个或多个条带727。条带727可以被定义为图像725的独占地包括在单个NAL单元(具体地为VCL NAL单元)中的整数个完整分块或整数个连续完整的编码树单元(coding tree unit,CTU)行(例如,在一个分块内)。条带727被进一步划分为CTU和/或编码树块(coding tree block,CTB)。CTU是一组预定义大小的样本,可以通过编码树进行分割。CTB是CTU的子集,并且包括CTU的亮度分量或色度分量。CTU/CTB根据编码树被进一步划分为编码块。然后可以根据预测机制对编码块进行编码/解码。
本发明包括当视频中的所有层723是同播的且不使用层间预测时使视频译码系统能够对多视图视频(例如,多视图序列600)进行正确解码的机制。例如,VPS 711可以包括各种数据,以向解码器指示层723都是同播的,并且指示OLS 721包括多于一个层723。vps_all_independent_layers_flag 731可以包括在码流700中的VPS 711中。vps_all_independent_layers_flag 731是一个语法元素,用于指示是否使用层间预测对码流700中的任何层723进行编码。例如,当层723中没有一个层使用层间预测并且因此所有层是同播的时,vps_all_independent_layers_flag 731可以被设置为1。在其它示例中,vps_all_independent_layers_flag 731可以被设置为0,以表示层723中的至少一个层使用层间预测。当vps_all_independent_layers_flag 731被设置为1,以表示所有层723是同播的时,each_layer_is_an_ols_flag 733在VPS 711中指示。each_layer_is_an_ols_flag 733是一个语法元素,用于指示码流700中的每个OLS 721是否包括单个层723。例如,在大多数情况下,每个OLS 721可以包括单个同播层。但是,当多视图视频被编码到码流700时,一个或多个OLS 721可以包括两个同播层。因此,each_layer_is_an_ols_flag 733可以被设置(例如,为1),以表示每个OLS 721包括单个层723,或被设置(例如,为0),以表示至少一个OLS721包括多于一个层723以支持多视图。因此,vps_all_independent_layers_flag 731和each_layer_is_an_ols_flag 733可用于支持多视图应用。
此外,VPS 711可以包括ols_mode_idc 735。ols_mode_idc 735是一个语法元素,用于表示与OLS 721的数量、OLS 721的层723和OLS 721中的输出层相关的信息。输出层723是指定用于由解码器输出而不是仅用于基于参考的译码的任何层。ols_mode_idc 735可以被设置为0或1,用于对其它类型的视频进行译码。ols_mode_idc 735可以被设置为2,以支持多视图。例如,当vps_all_independent_layers_flag 731被设置为1(表示同播层)时并且当each_layer_is_an_ols_flag 733被设置为0(表示至少一个OLS 721包括多于一个层723)时,ols_mode_idc 735可以被设置为2。当ols_mode_idc 735被设置为2时,OLS 721的数量和与每个OLS 721中包括的层723和/或输出层的数量相关的信息被显式地指示。
VPS 711还可以包括vps_max_layers_minus1 737。vps_max_layers_minus1 737是一个语法元素,用于指示由VPS 711指定的层723的数量,因此指示码流700中对应的编码视频序列中允许的层723的最大数量。VPS 711还可以包括num_output_layer_sets_minus1739。num_output_layer_sets_minus1 739是一个语法元素,用于表示VPS 711指定的OLS721的总数。在一个示例中,当ols_mode_idc 735被设置为2时,vps_max_layers_minus1737和num_output_layer_sets_minus1 739可以在VPS 711中指示。这导致当视频包括多视图时,OLS 721的数量和层723的数量被指示。具体地,当vps_all_independent_layers_flag 731被设置为1(表示同播层)时,并且当each_layer_is_an_ols_flag 733被设置为0(表示至少一个OLS 721包括多于一个层723)时,vps_max_layers_minus1737和num_output_layer_sets_minus1739可以被指示。然后,解码器可以使用该信息对包括多视图视频的OLS 721进行正确解码。这种方法支持纠正错误的同时保证了译码效率。具体地,支持多视图。但是,当不使用多视图时,OLS 721和/或层723的数量仍然可以从码流700中推断和省略。因此,所公开的机制通过使这种设备对多视图视频进行正确译码来增加编码器和/或解码器的功能。此外,所公开的机制可以减小码流大小,并因此减少编码器和解码器处的处理器、内存和/或网络资源的使用。
下面更详细地描述上述信息。分层视频编码也被称为可适性视频编码或具有可适性的视频编码。视频编码的可适性通常通过使用多层编码技术来支持。多层码流包括基本层(base layer,BL)和一个或多个增强层(enhancement layer,EL)。可适性的示例包括空间可适性、质量可适性/信噪比(signal to noise ratio,SNR)可适性、多视图可适性、帧率可适性等。当使用多层译码技术时,图像或其一部分可以不使用参考图像(帧内预测)进行编码,可以通过参考同一层中的参考图像(帧间预测)进行编码,和/或可以通过参考一个或多个其它层中的参考图像(层间预测)进行编码。用于当前图像的层间预测的参考图像被称为层间参考图像(inter-layer reference picture,ILRP)。图5示出了用于空间可适性的多层译码的示例,其中,不同层中的图像具有不同的分辨率。
一些视频编码系列支持根据用于单层译码的一个或多个档次(profile)实现一个或多个单独档次中的可适性。可适性视频编码(scalable video coding,SVC)是高级视频编码(advanced video coding,AVC)的可扩展版,支持空间可适性、时间可适性和质量可适性。对于SVC,在EL图像中的每个宏块(macroblock,MB)中指示了一个标志,以表示EL MB是否使用低层中的并置块进行预测。基于并置块的预测可以包括纹理、运动矢量和/或译码模式。实现SVC时,不能在SVC的实现设计中直接重用未经修改的AVC实现。SVC EL宏块语法和解码过程与AVC语法和解码过程不同。
可适性HEVC(scalable HEVC,SHVC)是HEVC的扩展,为空间可适性和质量可适性提供了支持。多视图HEVC(multiview HEVC,MV-HEVC)是HEVC的扩展,为多视图可适性提供了支持。3D HEVC(3D-HEVC)是HEVC的扩展,为比MV-HEVC更高级、更高效的3D视频译码提供了支持。时间可适性可以包括为单层HEVC编解码的组成部分。在HEVC的多层扩展中,用于层间预测的解码图像仅来自同一AU,并被视为长期参考图像(long-term reference picture,LTRP)。这种图像与当前层中的其它时间参考图像一起被分配一个或多个参考图像列表中的参考索引。层间预测(inter-layer prediction,ILP)是通过将参考索引的值设置为参考一个或多个参考图像列表中的一个或多个层间参考图像而在预测单元(prediction unit,PU)级实现。当ILRP具有与正在编码或解码的当前图像不同的空间分辨率时,空间可适性会重采样参考图像或其部分。参考图像重采样可以在图像级或编码块级实现。
VVC还可以支持分层视频编码。VVC码流可以包括多个层。这些层可以都相互独立。例如,可以在不使用层间预测的情况下对每个层进行译码。在这种情况下,这些层也被称为同播层。在某些情况下,这些层中的某些层使用ILP进行译码。VPS中的标志可以表示这些层是否为同播层,或者某些层是否使用ILP。当某些层使用ILP时,层之间的层依赖关系也会在VPS中指示。与SHVC和MV-HEVC不同,VVC可能不指定OLS。OLS包括指定层集,其中,层集中的一个或多个层被指定为输出层。输出层是OLS中用于输出的层。在VVC的某些实现方式中,当层是同播层时,只能选择一个层进行解码和输出。在VVC的某些实现方式中,当任一层使用ILP时,指定对包括所有层的整个码流进行解码。此外,层中的某些层被指定为输出层。输出层可以被指定为仅最高层、所有层或最高层加上一组指定的低层。
上述方面存在一定的问题。例如,当层是同播层时,可以只选择一层进行解码和输出。但是,这种方法不支持例如在多视图应用中可以解码和输出多于一个层的情况。
通常,本发明描述了支持具有用于同播层的多于一个输出层的操作点的方法。这些技术的描述是基于ITU-T和ISO/IEC的JVET的VVC。但是,这些技术也应用于基于其它视频编解码规范的分层视频编码。
上述问题中的一个或多个可以如下解决。具体地,本发明包括一种简单且高效的用于支持包括同播层的码流的多个层的解码和输出的方法,如下所述。VPS可以包括每个层是否是OLS的指示。当每个层是OLS时,仅一个层可以被解码和输出。在这种情况下,OLS的数量被推断为等于层的数量。此外,每个OLS包括一个层,并且该层是输出层。否则,OLS的数量被显式地指示。对于每个OLS,不包括第0个OLS,OLS中包括的层可以被显式地指示。此外,每个OLS中的每个层可以被推断为输出层。第0个OLS仅包括最低层,即输出层。
上述机制的示例性实现方式如下。示例性视频参数集语法如下。
Figure BDA0003557475000000221
Figure BDA0003557475000000231
示例性视频参数集语义如下。VPS RBSP在被参考之前应可用于解码过程,应包括在TemporalId等于0的至少一个接入单元中,或通过外部机制提供,并且包括VPS RBSP的VPS NAL单元的nuh_layer_id应等于vps_layer_id[0]。CVS中具有vps_video_parameter_set_id的特定值的所有VPS NAL单元应具有相同的内容。vps_video_parameter_set_id为VPS提供了标识符,以供其它语法元素参考。vps_max_layers_minus1+1表示参考VPS的每个CVS中的层的最大允许数量。vps_max_sub_layers_minus1+1表示参考VPS的每个CVS中可以存在的时间子层的最大数量。vps_max_sub_layers_minus1的值应在0到6的范围内,包括端值。
vps_all_independent_layers_flag可以被设置为1,以表示CVS中的所有层都是独立编码的,而不使用层间预测。vps_all_independent_layers_flag可以被设置为0,以表示CVS中的一个或多个层可以使用层间预测。当vps_all_independent_layers_flag不存在时,vps_all_independent_layers_flag的值被推断为等于1。当vps_all_independent_layers_flag等于1时,vps_independent_layer_flag[i]的值被推断为等于1。当vps_all_independent_layers_flag等于0时,vps_independentlayer_flag[0]的值被推断为等于1。vps_layer_id[i]表示第i层的nuh_layer_id值。对于m和n的任意两个非负整数值,当m小于n时,vps_layer_id[m]的值应小于vps_layer_id[n]。vps_independent_layer_flag[i]可以被设置为1,以表示索引为i的层不使用层间预测。vps_independent_layer_flag[i]可以被设置为0,以表示索引为i的层可以使用层间预测,并且vps_layer_dependency_flag[i]在VPS中存在。当vps_independent_layer_flag[i]不存在时,vps_independent_layer_flag[i]的值被推断为等于1。
vps_direct_dependencyflag[i][j]可以被设置为0,以表示索引为j的层不是索引为i的层的直接参考层。vps_direct_dependency_flag[i][j]可以被设置为1,以表示索引为j的层是索引为i的层的直接参考层。当对于在0到vps_max_layers_minus1的范围内(包括端值)的i和j,vps_direct_dependency_flag[i][j]不存在时,vps_direct_dependency_flag[i][j]被推断为等于0。表示第i层的第j直接相关层的变量DirectDependentLayerIdx[i][j]推导如下:
Figure BDA0003557475000000241
表示nuh_layer_id等于vps_layer_id[i]的层的层索引的变量variableGeneralLayerIdx[i]推导如下:
for(i=0;i<=vps_max_layers_minus1;i++)
GeneralLayerIdx[vps_layer_id[i]]=i
each_layer_is_an_ols_flag可以被设置为1,以表示每个输出层集仅包括一个层,并且码流中的每个层本身是输出层集,其中包括的单个层是唯一的输出层。each_layer_is_an_ols_flag可以被设置为0,以表示输出层集可以包括多于一个层。如果vps_max_layers_minus1等于0,则each_layer_is_an_ols_flag的值被推断为等于1。否则,当vps_all_independent_layers_flag等于0时,each_layer_is_an_ols_flag的值被推断为等于0。
ols_mode_idc可以被设置为0,以表示由VPS指定的OLS的总数等于vps_max_layers_minus1+1,第i个OLS包括层索引为从0到i(包括端值)的层,并且对于每个OLS,仅输出OLS中的最高层。ols_mode_idc可以被设置为1,以表示由VPS指定的OLS的总数等于vps_max_layers_minus1+1,第i个OLS包括层索引为从0到i(包括端值)的层,并且对于每个OLS,输出OLS中的所有层。ols_mode_idc可以被设置为2,以表示由VPS指定的OLS的总数被显式地指示,并且对于每个OLS,输出OLS中的最高层和显式指示的低层集合。ols_mode_idc值应在0到2的范围内,包括端值。ols_mode_idc的值3被保留。当vps_all_independent_layers_flag等于1且each_layer_is_an_ols_flag等于0时,ols_mode_idc的值被推断为等于2。
当ols_mode_idc等于2时,num_output_layer_sets_minus1+1表示由VPS指定的OLS的总数。表示由VPS指定的OLS的总数的变量TotalNumOlss推导如下:
Figure BDA0003557475000000242
Figure BDA0003557475000000251
当ols_mode_idc等于2时,layer_included_flag[i][j]表示第j层(例如,nuh_layer_id等于vps_layer_id[j]的层)是否包括在第i个OLS中。layer_included_flag[i][j]可以被设置为1,以表示第j层包括在第i个OLS中。layer_included_flag[i][j]可以被设置为0,以表示第i层不包括在第i个OLS中。
表示第i个OLS中的层的数量的变量NumLayersInOls[i]和表示第i个OLS中第i层的nuh_layer_id值的变量LayerIdInOls[i][j]可以推导如下:
Figure BDA0003557475000000252
表示nuh_layer_id等于LayerIdInOls[i][j]的层的OLS层索引的变量OlsLayeIdx[i][j]可以推导如下:
for(i=0,i<TotalNumOlss;i++)
forj=0;j<NumLayersInOls[i];j++)
OlsLayeIdx[i][LayerIdInOls[i][j]]=j
每个OLS中的最低层应是独立的层。换句话说,对于在0到TotalNumOlss-1范围内(包括端值)的每个i,vps_independent_layer_flag[GeneralLayerIdx[LayerIdInOls[i][0]]]的值应等于1。最高层(例如,nuh_layer_id等于vps_layer_id[vps_max_layers_minus1]的层)应包括在由VPS指定的至少一个OLS中。换句话说,对于在0到TotalNumOlss-1范围内(包括端值)的至少一个i,LayerIdInOls[i][NumLayersInOls[i]-1]的值应等于vps_layer_id[vps_max_layers_minus1]。
当ols_mode_idc等于2时,vps_output_layer_flag[i][j]表示是否输出第i个OLS中的第j层。vps_output_layer_flag[i]可以被设置为1,以表示输出第i个OLS中的第j层。vps_output_layer_flag[i]可以设置为等于0,以表示不输出第i个OLS中的第j层。当vps_all_independent_layers_flag等于1且each_layer_is_an_ols_flag等于0时,vps_output_layer_flag[i]的值可以被推断为等于1。
变量OutputLayerFlag[i][j]的值为1表示输出第i个OLS中的第j层,值为0表示不输出第i个OLS中的第j层,该变量可以推导如下:
Figure BDA0003557475000000261
OLS中的任何层都应是OLS的输出层或OLS的输出层的(直接或间接)参考层。第0个OLS仅包括最低层(例如,nuh_layer_id等于vps_layer_id[0]的层),对于第0个OLS,输出所包括的唯一层。vps_constraint_info_present_flag可以被设置为1,以表示general_constraint_info()语法结构在VPS中存在。vps_constraint_info_present_flag可以被设置为0,以表示general_constraint_info()语法结构在VPS中不存在。在符合规定的码流中,vps_reserved_zero_7bits应等于0。vps_reserved_zero_7bits的其它值被保留。解码器应忽略vps_reserved_zero_7bits的值。
general_hrd_params_present_flag可以被设置为1,以表示语法元素num_units_in_tick和time_scale以及语法结构general_hrd_parameters()在SPS RBSP语法结构中存在。general_hrd_params_present_flag可以被设置为0,以表示语法元素num_units_in_tick和time_scale以及语法结构general_hrd_parameters()在SPS RBSP语法结构中不存在。num_units_in_tick是以频率time_scale赫兹(hertz,Hz)运行的时钟的时间单位数,该频率对应于时钟滴答计数器的一个增量(被称为时钟计时周期)。num_units_in_tick应大于0。时钟计时周期(以秒为单位)等于num_units_in_tick除以time_scale的商。例如,当视频信号的图像速率为25Hz时,time_scale可以等于27000000,num_units_in_tick可以等于1080000,因此时钟计时周期可以等于0.04秒。
time_scale是一秒钟内通过的时间单位数。例如,使用27兆赫(megahertz,MHz)时钟测量时间的时间坐标系的time_scale为27000000。time_scale的值应大于0。vps_extension_flag可以被设置为0,以表示vps_extension_data_flag语法元素在VPS RBSP语法结构中不存在。vps_extension_flag可以被设置为1,以表示vps_extension_data_flag语法元素在VPS RBSP语法结构中存在。vps_extension_data_flag可以取任意值。vps_extension_data_flag的存在和值不会影响解码器对档次的符合性。符合的解码器应忽略所有vps_extension_data_flag语法元素。
图8是示例性视频译码设备800的示意图。视频译码设备800适用于实现本文描述的公开示例/实施例。视频译码设备800包括下行端口820、上行端口850和/或收发单元(Tx/Rx)810,收发单元(Tx/Rx)810包括发送器和/或接收器,用于通过网络向上游和/或下游传送数据。视频译码设备800还包括:处理器830,包括用于处理数据的逻辑单元和/或中央处理单元(central processing unit,CPU);和用于存储数据的存储器832。视频译码设备800还可以包括与上行端口850和/或下行端口820耦合的电子组件、光电(optical-to-electrical,OE)组件、电光(electrical-to-optical,EO)组件,和/或无线通信组件,用于通过电、光或无线通信网络传送数据。视频译码设备800还可以包括输入和/或输出(input/output,I/O)设备860,用于与用户进行数据通信。I/O设备860可以包括输出设备,如用于显示视频数据的显示器、用于输出音频数据的扬声器等。I/O设备860还可以包括输入设备,如键盘、鼠标、轨迹球等,和/或用于与此类输出设备交互的对应接口。
处理器830通过硬件和软件来实现。处理器830可以实现为一个或多个CPU芯片、核(例如,多核处理器)、现场可编程门阵列(field-programmable gate array,FPGA)、专用集成电路(application specific integrated circuit,ASIC)以及数字信号处理器(digital signal processor,DSP)。处理器830与下行端口820、Tx/Rx 810、上行端口850和存储器832通信。处理器830包括译码模块814。译码模块814实现本文描述的公开实施例,例如方法100、900和1000,它们可以使用多层视频序列500、多视图序列600和/或码流700。译码模块814还可以实现本文描述的任何其它方法/机制。此外,所述译码模块814可以实现编解码系统200、编码器300和/或解码器400。例如,译码模块814可以用于对each_layer_is_an_ols_flag进行译码,以表示每个OLS是否包括单个层,或者至少一个OLS是否包括多于一个层,以便在使用同播层时支持多视图。因此,译码模块814使视频译码设备800在译码视频数据时提供其它功能和/或译码效率。因此,译码模块814改进了视频译码设备800的功能,并解决了视频编码领域特有的问题。此外,译码模块814可以将视频译码设备800变换到不同的状态。或者,译码模块814可以实现为存储在存储器832中并由处理器830执行的指令(例如,实现为存储在非瞬时性介质上的计算机程序产品)。
存储器832包括一种或多种存储器类型,例如磁盘、磁带机、固态硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、闪存、三态内容寻址存储器(ternary content-addressable memory,TCAM)、静态随机存取存储器(staticrandom-access memory,SRAM)等。存储器832可以用作溢出数据存储设备,以在选择程序来执行时存储这些程序以及存储在执行程序过程中读取的指令和数据。
图9是对具有用于多视图中(例如,多视图序列600中)的同播层的OLS的视频序列(例如,在码流700中)进行编码的示例性方法900的流程图。编码器(例如,编解码系统200、编码器300和/或视频译码设备800)在执行方法100时可以使用方法900。
方法900可以开始于:编码器接收视频序列,并例如根据用户输入确定将该视频序列编码到用于多视图中的同播层集合中。在步骤901中,编码器对包括一个或多个编码图像的层的码流进行编码。例如,这些层可以是同播层,并且可以不根据层间预测进行编码。此外,可以对这些层进行编码以支持多视图视频。因此,层可以被组织成OLS,其中,一个或多个OLS包括两个层(例如,每个层用于向终端用户的每只眼睛显示)。
在步骤903中,编码器可以将VPS编码到码流中。VPS可以包括各种语法元素,以向解码器指示层/OLS配置,以便正确的多视图解码和显示。例如,VPS可以包括vps_all_independent_layers_flag,该vps_all_independent_layers_flag可以被设置为1,以表示由VPS指定的所有层是独立编码的,而不需要层间预测。当vps_all_independent_layers_flag被设置为1时,因此当由VPS指定的所有层是独立编码的而不需要层间预测时,VPS还可以包括each_layer_is_an_ols_flag。each_layer_is_an_ols_flag可以表示每个OLS是否仅包括一个层,或至少一个OLS是否包括多于一个层。例如,当表示每个OLS仅包括一个层和/或每个层是OLS,其中单个包括的层是唯一的输出层时,each_layer_is_an_ols_flag可以被设置为1。因此,当多视图不在使用中时,each_layer_is_an_ols_flag可以被设置为1。又例如,当表示至少一个OLS包括多于一个层,因此在步骤901编码的码流包括多视图视频时,each_layer_is_an_ols_flag可以被设置为0。
VPS还可以包括ols_mode_idc语法元素。例如,当each_layer_is_an_ols_flag被设置为0,并且vps_all_independent_layers_flag被设置为1时,ols_mode_idc可以被设置为2。当ols_mode_idc被设置为/等于2时,OLS的总数在VPS中被显式地指示。此外,当ols_mode_idc被设置为/等于2时,与每个OLS相关联的层的数量和/或输出层的数量在VPS中被显式地指示。在具体示例中,vps_max_layers_minus1语法元素可以包括在VPS中,以显式地表示由VPS指定的层的数量,因此可以表示OLS中可以包括的层的数量。在一些示例中,当vps_max_layers_minus1大于0时,vps_all_independent_layers_flag可以被指示。在另一个具体示例中,当ols_mode_idc等于2时,num_output_layer_sets_minus1可以包括在VPS中。num_output_layer_sets_minus1可以表示由VPS指定的OLS的总数。因此,当这些数据被显式地指示时(例如,当each_layer_is_an_ols_flag被设置为0,vps_all_independent_layers_flag被设置为1,并且ols_mode_idc被设置和/或推断为等于2时),vps_max_layers_minus1和num_output_layer_sets_minus1可以在VPS中指示,以分别表示层的数量和OLS的数量。在具体示例中,当vps_all_independent_layers_flag被设置为1且当each_layer_is_an_ols_flag被设置为0时,ols_mode_idc可以被推断为等于2。
在步骤905中,存储码流,用于发送到解码器。
图10是对包括用于多视图中(例如,多视图序列600中)的同播层的OLS的视频序列(例如,来自码流700)进行解码的示例性方法1000的流程图。解码器(例如,编解码系统200、解码器400和/或视频译码设备800)在执行方法100时可以使用方法1000。
例如,在方法900结束之后,方法1000可以开始于:解码器开始接收包括同播多视图层的OLS的码流。在步骤1001中,解码器接收码流。码流可以包括一个或多个OLS和一个或多个层。例如,这些层可以是同播层,并且可以不根据层间预测进行编码。此外,可以对这些层进行编码以支持多视图视频。因此,层可以被组织成OLS,其中,一个或多个OLS包括两个层(例如,每个层用于向终端用户的每只眼睛显示)。
所述码流还可以包括VPS。VPS可以包括各种语法元素,以向解码器指示层/OLS配置,以便正确的多视图解码和显示。例如,VPS可以包括vps_all_independent_layers_flag,该vps_all_independent_layers_flag可以被设置为1,以表示由VPS指定的所有层是独立编码的,而不需要层间预测。当vps_all_independent_layers_flag被设置为1时,因此当由VPS指定的所有层是独立编码的而不需要层间预测时,VPS还可以包括each_layer_is_an_ols_flag。each_layer_is_an_ols_flag可以表示OLS是否包括多于一个层。例如,当表示每个OLS仅包括一个层和/或每个层是OLS,其中单个包括的层是唯一的输出层时,each_layer_is_an_ols_flag可以被设置为1。因此,当多视图不在使用中时,each_layer_is_an_ols_flag可以被设置为1。又例如,当表示至少一个OLS包括多于一个层,因此码流包括多视图视频时,each_layer_is_an_ols_flag可以被设置为0。
VPS还可以包括ols_mode_idc语法元素。例如,当each_layer_is_an_ols_flag被设置为0,并且vps_all_independent_layers_flag被设置为1时,ols_mode_idc可以被设置为2。当ols_mode_idc被设置为2时,OLS的总数在VPS中被显式地指示。此外,当ols_mode_idc被设置为/等于2时,与每个OLS相关联的层的数量和/或输出层的数量在VPS中被显式地指示。在具体示例中,vps_max_layers_minus1语法元素可以包括在VPS中,以显式地表示由VPS指定的层的数量,因此可以表示OLS中可以包括的层的数量。在一些示例中,当vps_max_layers_minus1大于0时,vps_all_independent_layers_flag可以被指示。在另一个具体示例中,当ols_mode_idc等于2时,num_output_layer_sets_minus1可以包括在VPS中。num_output_layer_sets_minus1可以表示由VPS指定的OLS的总数。因此,当这些数据被显式地指示时(例如,当each_layer_is_an_ols_flag被设置为0,vps_all_independent_layers_flag被设置为1,并且ols_mode_idc被设置和/或推断为等于2时),vps_max_layers_minus1和num_output_layer_sets_minus1可以在VPS中指示,以分别表示层的数量和OLS的数量。在具体示例中,当vps_all_independent_layers_flag被设置为1且当each_layer_is_an_ols_flag被设置为0时,ols_mode_idc可以被推断为等于2。
在步骤1003中,根据VPS中的each_layer_is_an_ols_flag,对来自OLS的输出层的编码图像进行解码,以产生解码图像。例如,解码器可以读取vps_all_independent_layers_flag以确定所有层是同播的。解码器还可以读取each_layer_is_an_ols_flag,以确定至少一个OLS包括多于一个层。解码器还可以读取ols_mode_idc,以确定OLS的数量和层的数量被显式地指示。然后,解码器可以通过分别读取num_output_layer_sets_minus1和vps_max_layers_minus1来确定OLS的数量和层的数量。然后,解码器可以使用该信息在码流中定位正确的多视图层。解码器还可以从层中定位正确的编码图像。然后,解码器可以对图像进行解码,以生成解码图像。
在步骤1005中,解码器可以转发解码图像,以作为解码视频序列的一部分显示。
图11是对具有用于多视图中(例如,多视图序列600中)的同播层的OLS的视频序列(例如,在码流700中)进行译码的示例性系统1100的示意图。系统1100可以由编码器和解码器实现,如编解码系统200、编码器300、解码器400和/或视频译码设备800。此外,系统1100可以使用多层视频序列500。此外,当实现方法100、900和/或1000时,可以使用系统1100。
系统1100包括视频编码器1102。视频编码器1102包括编码模块1105,用于编码包括编码图像的一个或多个层的码流。编码模块1105还用于当由VPS指定的所有层被独立编码而不需要层间预测时,将包括each_layer_is_an_ols_flag的VPS编码到码流中,该each_layer_is_an_ols_flag表示每个OLS是否仅包括一个层。视频编码器1102还包括存储模块1106,该存储模块1106用于存储码流,以发送给解码器。视频编码器1102还包括发送模块1107,该发送模块1107用于将码流发送给视频解码器1110。视频编码器1102还可以用于执行方法900的步骤中的任一步骤。
系统1100还包括视频解码器1110。视频解码器1110包括接收模块1111,用于接收包括编码图像的一个或多个层和VPS的码流,其中,当由VPS指定的所有层被独立编码而不需要层间预测时,each_layer_is_an_ols_flag包括在VPS中,该each_layer_is_an_ols_flag表示每个OLS是否仅包括一个层。视频解码器1110还包括解码模块1113,用于根据VPS中的each_layer_is_an_ols_flag对来自OLS的输出层的编码图像进行解码,以产生解码图像。视频解码器1110还包括转发模块1115,该转发模块1115用于转发解码图像,以作为解码视频序列一部分显示。视频解码器1110还可以用于执行方法1000的步骤中的任一步骤。
当第一组件与第二组件之间除线、迹线或其它介质之外不存在中间组件时,第一组件与第二组件直接耦合。当第一组件与第二组件之间除线、迹线或其它介质之外还存在中间组件时,第一组件与第二组件间接耦合。术语“耦合”及其变型包括直接耦合和间接耦合。除非另有说明,否则使用术语“约”意指包括后续数字±10%的范围。
还应当理解,本文中阐述的示例性方法的步骤不一定需要按照所描述的顺序执行,并且这些方法的步骤的顺序应当理解为仅仅是示例性的。同样地,在与本发明各种实施例相一致的方法中,这些方法可以包括其它步骤,并且某些步骤可以省略或合并。
虽然本发明提供了若干个实施例,但应当理解,在不脱离本发明的精神或范围的情况下,所公开的系统和方法可以通过其它多种具体形式体现。本发明的示例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或组件可以在另一系统中组合或集成,或者某些特征可以省略或不实现。
此外,在各种实施例中描述和示出为分立的或单独的技术、系统、子系统和方法,在不背离本发明的范围的情况下,可以与其它系统、组件、技术或方法组合或集成。其它变更、替换、更改示例能够由本领域技术人员确定,并且可以在不脱离本文公开的精神和范围的情况下进行。

Claims (20)

1.一种在解码器中实现的方法,其特征在于,所述方法包括:
所述解码器的接收器接收包括编码图像的一个或多个层和视频参数集(videoparameter set,VPS)的码流,其中,当由所述VPS指定的所有层被独立编码而不需要层间预测时,每个层是输出层集(output layer set,OLS)标志(each_layer_is_an_ols_flag)包括在所述VPS中,所述each_layer_is_an_ols_flag表示每个OLS是否仅包括一个层;
所述解码器的处理器根据所述VPS中的所述each_layer_is_an_ols_flag,对来自OLS的输出层的编码图像进行解码,以生成解码图像;
所述处理器转发所述解码图像,以作为解码视频序列的一部分显示。
2.根据权利要求1所述的方法,其特征在于,当表示每个OLS仅包括一个层,并且每个层是所述每个OLS中唯一的输出层时,所述each_layer_is_an_ols_flag被设置为1。
3.根据权利要求1或2所述的方法,其特征在于,当表示至少一个OLS包括多于一个层时,所述each_layer_is_an_ols_flag被设置为0。
4.根据权利要求1至3中任一项所述的方法,其特征在于,当OLS模式标识码(ols_mode_idc)等于2时,OLS的总数被显式地指示,与OLS相关联的层被显式地指示,并且当VPS所有独立层标志(vps_all_independent_layers_flag)被设置为1时,并且当所述each_layer_is_an_ols_flag被设置为0时,所述ols_mode_idc被推断为等于2。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述VPS包括被设置为1的vps_all_independent_layers_flag,以表示由所述VPS指定的所有层被独立编码,而不需要层间预测。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述VPS包括VPS最大层数减1(vps_max_layers_minus1)语法元素,所述vps_max_layers_minus1语法元素表示由所述VPS指定的层的数量,并且当vps_max_layers_minus1大于0时,所述vps_all_independent_layers_flag被指示。
7.根据权利要求1至6中任一项所述的方法,其特征在于,当ols_mode_idc等于2时,所述VPS包括输出层集的数量减1(num_output_layer_sets_minus1),所述num_output_layer_sets_minus1表示由所述VPS指定的OLS的总数。
8.一种在编码器中实现的方法,其特征在于,所述方法包括:
所述编码器的处理器对包括编码图像的一个或多个层的码流进行编码;
所述处理器将视频参数集(video parameter set,VPS)编码到所述码流中,其中,当由所述VPS指定的所有层被独立编码而不需要层间预测时,所述VPS包括每个层是输出层集(output layer set,OLS)标志(each_layer_is_an_ols_flag),所述each_layer_is_an_ols_flag表示每个OLS是否仅包括一个层;
耦合到所述处理器的存储器存储所述码流,以发送给解码器。
9.根据权利要求8所述的方法,其特征在于,当表示每个OLS仅包括一个层,并且每个层是所述每个OLS中唯一的输出层时,所述each_layer_is_an_ols_flag被设置为1。
10.根据权利要求8至10所述的方法,其特征在于,当表示至少一个OLS包括多于一个层时,所述each_layer_is_an_ols_flag被设置为0。
11.根据权利要求8至10中任一项所述的方法,其特征在于,当OLS模式标识码(ols_mode_idc)等于2时,OLS的总数被显式地指示,与OLS相关联的层被显式地指示,并且当VPS所有独立层标志(vps_all_independent_layers_flag)被设置为1时,并且当所述each_layer_is_an_ols_flag被设置为0时,所述ols_mode_idc被推断为等于2。
12.根据权利要求8至11中任一项所述的方法,其特征在于,所述VPS包括被设置为1的vps_all_independent_layers_flag,以表示由所述VPS指定的所有层被独立编码,而不需要层间预测。
13.根据权利要求8至12中任一项所述的方法,其特征在于,所述VPS包括VPS最大层数减1(vps_max_layers_minus1)语法元素,所述vps_max_layers_minus1语法元素表示由所述VPS指定的层的数量,并且当vps_max_layers_minus1大于0时,所述vps_all_independent_layers_flag被指示。
14.根据权利要求8至13中任一项所述的方法,其特征在于,当ols_mode_idc等于2时,所述VPS包括输出层集的数量减1(num_output_layer_sets_minus1),所述num_output_layer_sets_minus1表示由所述VPS指定的OLS的总数。
15.一种视频译码设备,其特征在于,包括:
处理器、耦合到所述处理器的接收器、耦合到所述处理器的存储器和耦合到所述处理器的发送器,其中,所述处理器、所述接收器、所述存储器和所述发送器用于执行根据权利要求1至14中任一项所述的方法。
16.一种非瞬时性计算机可读介质,其特征在于,包括供视频译码设备使用的计算机程序产品,其中,所述计算机程序产品包括存储在所述非瞬时性计算机可读介质中的计算机可执行指令,所述计算机可执行指令在由处理器执行时,使所述视频译码设备执行根据权利要求1至14中任一项所述的方法。
17.一种解码器,其特征在于,包括:
接收模块,用于接收包括编码图像的一个或多个层和视频参数集(video parameterset,VPS)的码流,其中,当由所述VPS指定的所有层被独立编码而不需要层间预测时,每个层是输出层集(output layer set,OLS)标志(each_layer_is_an_ols_flag)包括在所述VPS中,所述each_layer_is_an_ols_flag表示每个OLS是否仅包括一个层;
解码模块,用于根据所述VPS中的所述each_layer_is_an_ols_flag,对来自OLS的输出层的编码图像进行解码,以生成解码图像;
转发模块,用于转发所述解码图像,以作为解码视频序列的一部分显示。
18.根据权利要求17所述的解码器,其特征在于,所述解码器还用于执行根据权利要求1至7中任一项所述的方法。
19.一种编码器,其特征在于,包括:
编码模块,用于:
对包括编码图像的一个或多个层的码流进行编码;
将视频参数集(video parameter set,VPS)编码到所述码流中,其中,当由所述VPS指定的所有层被独立编码而不需要层间预测时,所述VPS包括每个层是输出层集(outputlayer set,OLS)标志(each_layer_is_an_ols_flag),所述each_layer_is_an_ols_flag表示每个OLS是否仅包括一个层;
存储模块,用于存储所述码流,以发送给解码器。
20.根据权利要求19所述的编码器,其特征在于,所述编码器还用于执行根据权利要求8至14中任一项所述的方法。
CN202080066246.2A 2019-09-24 2020-09-08 视频译码中用于多视图的同播层 Pending CN114731385A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962905126P 2019-09-24 2019-09-24
US62/905,126 2019-09-24
PCT/US2020/049732 WO2021061394A1 (en) 2019-09-24 2020-09-08 Simulcast layers for multiview in video coding

Publications (1)

Publication Number Publication Date
CN114731385A true CN114731385A (zh) 2022-07-08

Family

ID=75166790

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080066246.2A Pending CN114731385A (zh) 2019-09-24 2020-09-08 视频译码中用于多视图的同播层

Country Status (12)

Country Link
US (1) US20220191533A1 (zh)
EP (1) EP4022887A4 (zh)
JP (2) JP7335433B2 (zh)
KR (1) KR20220063261A (zh)
CN (1) CN114731385A (zh)
AU (1) AU2020354906A1 (zh)
BR (2) BR112022005586A2 (zh)
CA (1) CA3152362A1 (zh)
CL (1) CL2022000734A1 (zh)
IL (1) IL291695A (zh)
MX (1) MX2022003565A (zh)
WO (1) WO2021061394A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021134015A1 (en) 2019-12-26 2021-07-01 Bytedance Inc. Profile, tier and layer indication in video coding
EP4062319A4 (en) 2019-12-26 2023-01-11 ByteDance Inc. REPORTING DECODED FRAME BUFFER PARAMETERS IN LAYERED VIDEO
EP4066499A4 (en) 2019-12-27 2023-01-11 ByteDance Inc. SYNTAX FOR SIGNALING VIDEO IMAGES
CN115004669A (zh) 2020-01-09 2022-09-02 字节跳动有限公司 不同sei消息的解码顺序
US11297350B1 (en) * 2020-03-27 2022-04-05 Tencent America LLC Method for output layer set for multilayered video stream

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9591321B2 (en) * 2013-04-07 2017-03-07 Dolby International Ab Signaling change in output layer sets
EP3457700A1 (en) 2013-04-07 2019-03-20 Dolby International AB Signaling coded picture buffer removal delay
US20140307803A1 (en) * 2013-04-08 2014-10-16 Qualcomm Incorporated Non-entropy encoded layer dependency information
JP6465863B2 (ja) 2014-03-14 2019-02-06 シャープ株式会社 画像復号装置、画像復号方法及び記録媒体
US11979611B2 (en) * 2019-09-06 2024-05-07 Sharp Kabushiki Kaisha Systems and methods for signaling temporal sub-layer information in video coding

Also Published As

Publication number Publication date
BR112022005586A2 (pt) 2022-06-21
EP4022887A4 (en) 2022-10-26
JP2022549647A (ja) 2022-11-28
AU2020354906A1 (en) 2022-04-21
IL291695A (en) 2022-05-01
BR122022009680A2 (pt) 2022-07-12
MX2022003565A (es) 2022-06-16
CL2022000734A1 (es) 2022-11-18
US20220191533A1 (en) 2022-06-16
JP2023155301A (ja) 2023-10-20
WO2021061394A1 (en) 2021-04-01
EP4022887A1 (en) 2022-07-06
CA3152362A1 (en) 2021-04-01
JP7335433B2 (ja) 2023-08-29
KR20220063261A (ko) 2022-05-17

Similar Documents

Publication Publication Date Title
CN114968894B (zh) Sei消息的时间标识符约束条件
CN114514741B (zh) 用于基于层的一致性测试的hrd参数
CN114503591B (zh) 支持空间可适性和snr可适性的ols
JP7335433B2 (ja) ビデオコーディングにおけるマルチビューのためのサイマルキャストレイヤ
CN115002474B (zh) 一种由解码器实现的方法、译码设备、可读介质和解码器
CN114900697B (zh) 由编码器/解码器实现的方法、视频译码设备及计算机可读介质
CN114586368A (zh) 用于多层视频码流的dpb参数的指示
KR20210105980A (ko) 비디오 인코더, 비디오 디코더 및 상응하는 방법들
CN114424526B (zh) 用于指定层的可伸缩嵌套式sei消息的编解码方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination