本发明大体上涉及一种视频译码,并且具体涉及用于支持对多层码流中的层进行编码的可伸缩嵌套式补充增强信息(supplemental enhancement information,sei)消息。
背景技术:
1、即使视频相对较短,也需要大量的视频数据来描述,当数据要在带宽容量有限的通信网络中流式传输或以其它方式传输时,这样可能会造成困难。因此,视频数据通常要先压缩,然后通过现代电信网络进行传输。由于内存资源可能有限,当在存储设备中存储视频时,该视频的大小也可能是一个问题。视频压缩设备通常在源侧使用软件和/或硬件对视频数据进行编码,然后进行传输或存储,从而减少表示数字视频图像所需的数据量。然后,由对视频数据进行解码的视频解压缩设备在目的地侧接收压缩数据。在有限的网络资源以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。
技术实现思路
1、在一个实施例中,本发明包括一种在解码器中实现的方法,所述方法包括:所述解码器的接收器接收包括一个或多个层和当前补充增强信息(supplemental enhancementinformation,sei)网络抽象层(network abstraction layer,nal)单元中的可伸缩嵌套式sei消息的码流,其中,所述可伸缩嵌套式sei消息包括一个或多个伸缩嵌套的sei消息和一个或多个可伸缩嵌套的层标识符(identifier,id),所述可伸缩嵌套的层id表示所述伸缩嵌套的sei消息应用于的所述层的层id值,所述当前sei nal单元的层id值除外;所述解码器的处理器对来自所述一个或多个层的编码图像进行解码,以产生解码图像;所述处理器转发所述解码图像,以作为解码视频序列的一部分显示。
2、一些视频译码系统使用sei消息。sei消息包括解码过程不需要的信息,以确定解码图像中样本的值。例如,sei消息可以包括用于检查码流是否符合标准的参数。在一些情况下,视频被编码到使用多个层的码流中。可伸缩嵌套式sei消息可用于包括用于多个层的sei消息。例如,可伸缩嵌套式sei消息包括伸缩嵌套的sei消息。当可伸缩嵌套式sei消息中包括层id列表以指示伸缩嵌套的sei消息与层之间的对应关系时,可能会出现问题。可伸缩嵌套式sei消息包括在seinal单元中,为了便于讨论,该seinal单元可以表示为当前seinal单元。当前sei nal单元与层id相关联。可伸缩嵌套式sei消息始终和与当前sei nal单元相关联的层相关。这会导致冗余指示,因为当前sei nal单元的层id包括在当前sei nal单元中,并且也包括在当前nal单元中包括的可伸缩嵌套式sei消息中。
3、本示例包括对可伸缩嵌套式sei消息的改进,以便与指定层结合使用。具体地,层id可以称为nal单元头层id(nuh_layer_id)。当前sei nal单元的nuh_layer_id被排除在可伸缩嵌套式sei消息外。这可以通过使用可伸缩嵌套的层id(1ayer_id[i])语法元素来实现,该语法元素表示伸缩嵌套的sei消息应用于的每个层的nuh_layer_id。scalablenesting layer_id[i]被约束为仅包括nuh_layer_id,该nuh_layer_id大于当前sei nal单元的nuh_layer_id。因此,当前seinal单元的nuh_layer_id被从可伸缩嵌套式sei消息中省略,并从当前seinal单元推断。这通过省略冗余id来改进可伸缩嵌套式sei消息。例如,编码/解码scalable nesting layer_id[i]的循环少执行一次,这在编码和/或解码期间减少了处理器资源使用。此外,这减小了码流中每个可伸缩嵌套式sei消息的经编码码流的大小。结果,提高了译码效率,从而减少了编码器和解码器处的处理器、内存和/或网络指示资源的使用。
4、可选地,根据上述任一方面,在所述方面的另一种实现方式中,当可伸缩嵌套的所有层标记(all_layers_flag)等于0时,所述可伸缩嵌套的层id是scalable nestinglayer_id[i]语法元素,所述scalable nesting layer_id[i]语法元素表示所述伸缩嵌套的sei消息应用于的第i层的nuh_layer_id值。
5、可选地,根据上述任一方面,在所述方面的另一种实现方式中,scalable nestinglayer_id[i]的每个值大于所述当前sei nal单元的nuh_layer_id值。
6、可选地,根据上述任一方面,在所述方面的另一种实现方式中,还包括由所述处理器推导嵌套层数量(nestingnumlayers)变量,所述nestingnumlayers变量表示所述伸缩嵌套的sei消息应用于的层的数量。
7、可选地,根据上述任一方面,在所述方面的另一种实现方式中,还包括由所述处理器推导嵌套层id列表(nestinglayerid[i]),所述nestinglayerid[i]表示所述伸缩嵌套的sei消息应用于的所述层的nuh_layer_id值的列表,其中,i在0到nestingnumlayers-1的范围内,包括端值。
8、可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述nestingnumlayers和所述nestinglayerid[i]推导如下:
9、
10、其中,scalable nesting all_layers_flag表示所述伸缩嵌套的sei消息是否应用于所有层,vps_max_layers_minus1+1表示由视频参数集(video parameter set,vps)指定的层的数量,generallayeridx是表示nuh_layer_id等于vps_layer_id[i]的层的层索引的变量,vps_layer_id[i]表示第i层的nuh_layer_id值,scalable nesting num_layers_minus 1+1表示所述伸缩嵌套的sei消息应用于的层的数量。
11、可选地,根据上述任一方面,在所述方面的另一种实现方式中,scalable nestingnum_layers_minus1在0到vps_max_layers_minus1-generallayeridx[nuh_layer_id]的范围内,包括端值,其中,nuh_layer_id是所述当前sei nal单元的所述nuh_layer_id。
12、可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述编码图像是基于所述伸缩嵌套的sei消息进行解码的。
13、可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述可伸缩嵌套式sei消息包括应用于所述当前seinal单元的层的至少一个伸缩嵌套的sei消息。
14、在一个实施例中,本发明包括一种在编码器中实现的方法,所述方法包括:所述编码器的处理器对包括一个或多个层的码流进行编码;所述处理器将当前sei nal单元中的可伸缩嵌套式sei消息编码到所述码流中,其中,所述可伸缩嵌套式sei消息包括一个或多个伸缩嵌套的sei消息和一个或多个可伸缩嵌套的层id,所述可伸缩嵌套的层id表示所述伸缩嵌套的sei消息应用于的所述层的层id值,同时施加约束以省略所述当前sei nal单元的层id值;所述处理器根据所述伸缩嵌套的sei消息对所述层执行一组码流符合性测试;耦合到所述处理器的存储器存储所述码流,以发送给解码器。
15、一些视频译码系统使用sei消息。sei消息包括解码过程不需要的信息,以确定解码图像中样本的值。例如,sei消息可以包括用于检查码流是否符合标准的参数。在一些情况下,视频被编码到使用多个层的码流中。可伸缩嵌套式sei消息可用于包括用于多个层的sei消息。例如,可伸缩嵌套式sei消息包括伸缩嵌套的sei消息。当可伸缩嵌套式sei消息中包括层id列表以指示伸缩嵌套的sei消息与层之间的对应关系时,可能会出现问题。可伸缩嵌套式sei消息包括在seinal单元中,为了便于讨论,该seinal单元可以表示为当前seinal单元。当前seinal单元与层id相关联。可伸缩嵌套式sei消息始终和与当前seinal单元相关联的层相关。这会导致冗余指示,因为当前sei nal单元的层id包括在当前sei nal单元中,并且也包括在当前nal单元中包括的可伸缩嵌套式sei消息中。
16、本示例包括对可伸缩嵌套式sei消息的改进,以便与指定层结合使用。具体地,层id可以称为nuh_layer_id。当前sei nal单元的nuh_layer_id被排除在可伸缩嵌套式sei消息外。这可以通过使用scalable nesting layer_id[i]语法元素来实现,该scalablenesting layer_id[i]语法元素表示伸缩嵌套的sei消息应用于的每个层的nuh_layer_id。scalable nesting layer_id[i]被约束为仅包括nuh_layer_id,该nuh_layer_id大于当前sei nal单元的nuh_layer_id。因此,当前seinal单元的nuh_layer_id被从可伸缩嵌套式sei消息中省略,并从当前seinal单元推断。这通过省略冗余id来改进可伸缩嵌套式sei消息。例如,编码/解码scalable nesting layer_id[i]的循环少执行一次,这在编码和/或解码期间减少了处理器资源使用。此外,这减小了码流中每个可伸缩嵌套式sei消息的经编码码流的大小。结果,提高了译码效率,从而减少了编码器和解码器处的处理器、内存和/或网络指示资源的使用。
17、可选地,根据上述任一方面,在所述方面的另一种实现方式中,当scalablenesting all_layers_flag等于0时,所述可伸缩嵌套的层id是scalable nesting layer_id[i]语法元素,所述scalable nesting layer_id[i]语法元素表示所述伸缩嵌套的sei消息应用于的第i层的nuh_layer_id值。
18、可选地,根据上述任一方面,在所述方面的另一种实现方式中,scalable nestinglayer_id[i]的每个值大于所述当前sei nal单元的nuh_layer_id值。
19、可选地,根据上述任一方面,在所述方面的另一种实现方式中,执行所述一组码流符合性测试还包括推导嵌套层数量(nestingnumlayers)变量,所述nestingnumlayers变量表示所述伸缩嵌套的sei消息应用于的层的数量。
20、可选地,根据上述任一方面,在所述方面的另一种实现方式中,执行所述一组码流符合性测试还包括推导嵌套层id列表(nestinglayerid[i]),所述nestinglayerid[i]表示所述伸缩嵌套的sei消息应用于的所述层的nuh_layer_id值的列表,其中,i在0到nestingnumlayers-1的范围内,包括端值。
21、可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述nestingnumlayers和所述nestinglayerid[i]推导如下:
22、
23、其中,scalable nesting all_layers_flag表示所述伸缩嵌套的sei消息是否应用于所有层,vps_max_layers_minus1+1表示由视频参数集(video parameter set,vps)指定的层的数量,generallayeridx是表示nuh_layer_id等于vps_layer_id[i]的层的层索引的变量,vps_layer_id[i]表示第i层的nuh_layer_id值,scalable nesting num_layers_minus1+1表示所述伸缩嵌套的sei消息应用于的层的数量。
24、可选地,根据上述任一方面,在所述方面的另一种实现方式中,scalable nestingnum_layers_minus1在0到vps_max_layers_minus1-generallayeridx[nuh_layer_id]的范围内,包括端值,其中,nuh_layer_id是所述当前sei nal单元的所述nuh_layer_id。
25、可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述可伸缩嵌套式sei消息包括应用于所述当前seinal单元的层的至少一个伸缩嵌套的sei消息。
26、在一个实施例中,本发明包括一种视频译码设备,所述视频译码设备包括:处理器、与所述处理器耦合的接收器、与所述处理器耦合的存储器和与所述处理器耦合的发送器,其中,所述处理器、所述接收器、所述存储器和所述发送器用于执行根据上述任一方面所述的方法。
27、在一个实施例中,本发明包括一种非瞬时性计算机可读介质,所述非瞬时性计算机可读介质包括供视频译码设备使用的计算机程序产品,其中,所述计算机程序产品包括存储在所述非瞬时性计算机可读介质中的计算机可执行指令,所述计算机可执行指令在由处理器执行时,使所述视频译码设备执行根据上述任一方面所述的方法。
28、在一个实施例中,本发明包括一种解码器,所述解码器包括:接收模块,用于接收包括一个或多个层和sei nal单元中的可伸缩嵌套式sei消息的码流,其中,所述可伸缩嵌套式sei消息包括一个或多个伸缩嵌套的sei消息和一个或多个可伸缩嵌套的层id,所述可伸缩嵌套的层id表示所述伸缩嵌套的sei消息应用于的所述层的层id值,所述当前sei nal单元的层id值除外;解码模块,用于对来自所述一个或多个层的编码图像进行解码,以产生解码图像;转发模块,用于转发所述解码图像,以作为解码视频序列的一部分显示。
29、一些视频译码系统使用sei消息。sei消息包括解码过程不需要的信息,以确定解码图像中样本的值。例如,sei消息可以包括用于检查码流是否符合标准的参数。在一些情况下,视频被编码到使用多个层的码流中。可伸缩嵌套式sei消息可用于包括用于多个层的sei消息。例如,可伸缩嵌套式sei消息包括伸缩嵌套的sei消息。当可伸缩嵌套式sei消息中包括层id列表以指示伸缩嵌套的sei消息与层之间的对应关系时,可能会出现问题。可伸缩嵌套式sei消息包括在seinal单元中,为了便于讨论,该seinal单元可以表示为当前seinal单元。当前sei nal单元与层id相关联。可伸缩嵌套式sei消息始终和与当前sei nal单元相关联的层相关。这会导致冗余指示,因为当前sei nal单元的层id包括在当前sei nal单元中,并且也包括在当前nal单元中包括的可伸缩嵌套式sei消息中。
30、本示例包括对可伸缩嵌套式sei消息的改进,以便与指定层结合使用。具体地,层id可以称为nuh_layer_id。当前sei nal单元的nuh_layer_id被排除在可伸缩嵌套式sei消息外。这可以通过使用scalable nesting layer_id[i]语法元素来实现,该scalablenesting layer_id[i]语法元素表示伸缩嵌套的sei消息应用于的每个层的nuh_layer_id。scalable nesting layer_id[i]被约束为仅包括nuh_layer_id,该nuh_layer_id大于当前sei nal单元的nuh_layer_id。因此,当前seinal单元的nuh_layer_id被从可伸缩嵌套式sei消息中省略,并从当前seinal单元推断。这通过省略冗余id来改进可伸缩嵌套式sei消息。例如,编码/解码scalable nesting layer_id[i]的循环少执行一次,这在编码和/或解码期间减少了处理器资源使用。此外,这减小了码流中每个可伸缩嵌套式sei消息的经编码码流的大小。结果,提高了译码效率,从而减少了编码器和解码器处的处理器、内存和/或网络指示资源的使用。
31、可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述解码器还用于执行根据上述任一方面所述的方法。
32、在一个实施例中,本发明包括一种编码器,所述编码器包括:编码模块,用于:对包括一个或多个层的码流进行编码,将当前sei nal单元中的可伸缩嵌套式sei消息编码到所述码流中,其中,所述可伸缩嵌套式sei消息包括一个或多个伸缩嵌套的sei消息和一个或多个可伸缩嵌套的层id,所述可伸缩嵌套的层id表示所述伸缩嵌套的sei消息应用于的所述层的层id值,同时施加约束以省略所述当前seinal单元的层id值;hrd模块,用于根据所述伸缩嵌套的sei消息对所述层执行一组码流符合性测试;存储模块,用于存储所述码流,以发送给解码器。
33、一些视频译码系统使用sei消息。sei消息包括解码过程不需要的信息,以确定解码图像中样本的值。例如,sei消息可以包括用于检查码流是否符合标准的参数。在一些情况下,视频被编码到使用多个层的码流中。可伸缩嵌套式sei消息可用于包括用于多个层的sei消息。例如,可伸缩嵌套式sei消息包括伸缩嵌套的sei消息。当可伸缩嵌套式sei消息中包括层id列表以指示伸缩嵌套的sei消息与层之间的对应关系时,可能会出现问题。可伸缩嵌套式sei消息包括在seinal单元中,为了便于讨论,该seinal单元可以表示为当前seinal单元。当前sei nal单元与层id相关联。可伸缩嵌套式sei消息始终和与当前sei nal单元相关联的层相关。这会导致冗余指示,因为当前sei nal单元的层id包括在当前sei nal单元中,并且也包括在当前nal单元中包括的可伸缩嵌套式sei消息中。
34、本示例包括对可伸缩嵌套式sei消息的改进,以便与指定层结合使用。具体地,层id可以称为nuh_layer_id。当前sei nal单元的nuh_layer_id被排除在可伸缩嵌套式sei消息外。这可以通过使用scalable nesting layer_id[i]语法元素来实现,该scalablenesting layer_id[i]语法元素表示伸缩嵌套的sei消息应用于的每个层的nuh_layer_id。scalable nesting layer_id[i]被约束为仅包括nuh_layer_id,该nuh_layer_id大于当前sei nal单元的nuh_layer_id。因此,当前seinal单元的nuh_layer_id被从可伸缩嵌套式sei消息中省略,并从当前seinal单元推断。这通过省略冗余id来改进可伸缩嵌套式sei消息。例如,编码/解码scalable nesting layer_id[i]的循环少执行一次,这在编码和/或解码期间减少了处理器资源使用。此外,这减小了码流中每个可伸缩嵌套式sei消息的经编码码流的大小。结果,提高了译码效率,从而减少了编码器和解码器处的处理器、内存和/或网络指示资源的使用。
35、可选地,根据上述任一方面,在所述方面的另一种实现方式中,所述编码器还用于执行根据上述任一方面所述的方法。
36、为了清楚起见,上述任一实施例可以与上述其它实施例中任何一个或多个组合以创建本发明范围内的新实施例。
37、从结合附图和权利要求书的以下详细描述中,将更清楚地理解这些和其它特征。