首页 / 专利库 / 视听技术与设备 / 视频编码层 / 视频序列图像的解码和编码

视频序列图像的解码和编码

阅读:851发布:2020-06-07

专利汇可以提供视频序列图像的解码和编码专利检索,专利查询,专利分析的服务。并且通过在当前图像已解码且存储在解码图像缓冲区DPB(125,225,325,425,525,625)中后确定DPB(125,225,325,425,525,625)中被标记为需要输出的图像的数量, 实施例 降低了图像的输出延时。在当前图像已解码且存储在DPB(125,225,325,425,525,625)中后,将所述数量与从至少一个语法元素导出的值比较,所述语法元素存在于或将存在于表示视频序列图像的比特流(10)之中。如果所述数量大于所述值,优选地输出DPB(125,225,325,425,525,625)中被标记为需要输出的图像中、作为输出顺序中的第一图像的图像,并将其标记为不需要输出。,下面是视频序列图像的解码和编码专利的具体信息内容。

1.一种由解码器(100,200,400)执行的方法,所述方法包括:
在比特流的当前图像已解码且存储在解码图像缓冲区(125,225)中后,确定(S1)所述解码图像缓冲区(125,225)中被标记为需要输出的图像的数量,所述当前图像属于多层视频序列的由所述解码器(100,200,400)解码的最高层以外的层,所述多层视频序列包括多个图像层;
从与所述最高层相关联的语法元素导出值sps_max_num_reorder_pics[HighestTid],其中,HighestTid指定所述最高层,并且所述语法元素是从所述比特流中的序列参数集合获取的;所述多层中的每层i具有相关联的语法元素,该相关联的语法元素定义了相应值sps_max_num_reorder_pics[i];并且所述值sps_max_num_reorder_pics[i]指示:当HighestTid等于i时,能够在解码顺序中位于所述多层视频序列中的任意图像之前且在输出顺序中位于该图像之后的最大允许图像数量;
如果所述解码图像缓冲区(125,225)中被标记为需要输出的图像的所述数量大于所述值sps_max_num_reorder_pics[HighestTid],输出(S3)所述解码图像缓冲区(125,225)中被标记为需要输出的所述图像中作为输出顺序中的第一图像的图像;
如果所述解码图像缓冲区(125,225)中被标记为需要输出的图像的所述数量大于所述值sps_max_num_reorder_pics[HighestTid],将所述解码图像缓冲区(125,225)中被标记为需要输出的所述图像中作为输出顺序中的第一图像的所述图像标记(S4)为不需要输出。
2.根据权利要求1所述的方法,还包括:
解析(S10)所述多层视频序列中要解码的所述当前图像的切片首部;
基于所解析的切片首部,确定(S11)所述当前图像的参考图像集;
将所述解码图像缓冲区(125,225)中不存在于所述参考图像集中的所有图像标记(S12)为不用于参考;
输出(S13)所述解码图像缓冲区(125,225)中的图像中被标记为需要输出的0个、1个或多个图像,并将所述0个、1个或多个图像标记为不需要输出;
从所述解码图像缓冲区(125,225)中清空(S14)所述解码图像缓冲区(125,225)中的所述图像中被标记为不用于参考且不需要输出的任意图像;以及
解码(S15)所述当前图像,其中确定(S1)所述图像的数量、输出(S3)所述图像以及标记(S4)所述图像在解码(S15)所述当前图像之后执行。
3.一种由解码器(100,300,500)执行的方法,所述方法包括:
解析(S30)多层视频序列中要解码的比特流的当前图像的切片首部,所述当前图像属于所述多层视频序列的由所述解码器(100,200,400)解码的最高层以外的层,所述多层视频序列包括多个图像层;
基于所解析的切片首部,确定(S31)所述当前图像的参考图像集;
将解码图像缓冲区(125,325)中不存在于所述参考图像集中的所有图像标记(S32)为不用于参考;
输出(S33)所述解码图像缓冲区(125,325)中的图像中被标记为需要输出的0个、1个或多个图像,并将所述0个、1个或多个图像标记为不需要输出;
从所述解码图像缓冲区(125,325)中清空(S34)所述解码图像缓冲区(125,225)中的所述图像中被标记为不用于参考且不需要输出的任意图像;
解码(S35)所述当前图像;
确定(S36)所述解码图像缓冲区(125,325)中被标记为需要输出的图像的数量;
从与所述最高层相关联的语法元素导出值sps_max_num_reorder_pics[HighestTid],其中,HighestTid指定所述最高层,并且所述语法元素是从所述比特流中的序列参数集合获取的;所述多层中的每层i具有相关联的语法元素,该相关联的语法元素定义了相应值sps_max_num_reorder_pics[i];并且所述值sps_max_num_reorder_pics[i]指示:当HighestTid等于i时,能够在解码顺序中位于所述多层视频序列中的任意图像之前且在输出顺序中位于该图像之后的最大允许图像数量;
如果所述解码图像缓冲区(125,325)中被标记为需要输出的图像的所述数量大于所述值sps_max_num_reorder_pics[HighestTid],输出(S38)所述解码图像缓冲区(125,225)中被标记为需要输出的所述图像中作为输出顺序中的第一图像的图像;
如果所述解码图像缓冲区(125,325)中被标记为需要输出的图像的所述数量大于所述值sps_max_num_reorder_pics[HighestTid],将所述解码图像缓冲区(125,225)中被标记为需要输出的所述图像中作为输出顺序中的第一图像的所述图像标记(S39)为不需要输出,其中确定(S36)所述图像的数量、输出(S38)所述图像以及标记(S39)所述图像在解码(S35)所述当前图像之后执行。
4.根据权利要求3所述的方法,还包括:
在所述解码图像缓冲区(125,325)中存储(S40)所述已解码的当前图像;以及将所述已解码的当前图像标记(S41)为需要输出或不需要输出,其中确定(S1,S36)所述图像的数量在标记(S41)所述已解码的当前图像之后执行。
5.根据权利要求1到4中任一项所述的方法,还包括:
输出(S3,S38)所述图像包括:如果所述解码图像缓冲区(125,225,325)中被标记为需要输出的图像的所述数量大于所述值sps_max_num_reorder_pics[HighestTid],输出所述解码图像缓冲区(125,225,325)中被标记为需要输出的所有图像中具有最小PicOrderCntVal值的所述解码图像缓冲区(125,225,325)中的图像,其中PicOrderCntVal表示图像顺序计数值。
6.一种解码器(400),包括:
数量确定模(410),用于在表示多层视频序列图像的比特流(10)的当前图像已解码且存储在解码图像缓冲区中后,确定所述解码图像缓冲区中被标记为需要输出的图像的数量,所述当前图像属于多层视频序列的由所述解码器(400)解码的最高层以外的层,所述多层视频序列包括多个图像层;
比较模块(420),用于将所述解码图像缓冲区中被标记为需要输出的图像的数量与值sps_max_num_reorder_pics[HighestTid]进行比较,其中,HighestTid指定所述最高层,并且所述值sps_max_num_reorder_pics[HighestTid]是从与所述最高层相关联的语法元素导出的,并且所述语法元素是从所述比特流中的序列参数集合获取的;所述多层中的每层i具有相关联的语法元素,该相关联的语法元素定义了相应值sps_max_num_reorder_pics[i];并且所述值sps_max_num_reorder_pics[i]指示:当HighestTid等于i时,能够在解码顺序中位于所述多层视频序列中的任意图像之前且在输出顺序中位于该图像之后的最大允许图像数量;
输出模块(430),用于在所述解码图像缓冲区中被标记为需要输出的图像的所述数量大于所述值sps_max_num_reorder_pics[HighestTid]的情况下,输出所述解码图像缓冲区中被标记为需要输出的所述图像中作为输出顺序中的第一图像的图像;
标记模块(440),用于在所述解码图像缓冲区中被标记为需要输出的图像的所述数量大于所述值sps_max_num_reorder_pics[HighestTid]的情况下,将所述解码图像缓冲区中被标记为需要输出的所述图像中作为输出顺序中的第一图像的所述图像标记为不需要输出。
7.一种解码器(500),包括:
解析模块(510),用于解析表示多层视频序列图像的比特流(10)中要解码的当前图像的切片首部,所述当前图像属于所述多层视频序列的由所述解码器(500)解码的最高层以外的层,所述多层视频序列包括多个图像层;
参考图像集确定模块(520),用于基于所解析的切片首部,确定所述当前图像的参考图像集;
标记模块(530),用于将解码图像缓冲区中不存在于所述参考图像集中的所有图像标记为不用于参考;
输出模块(540),用于输出所述解码图像缓冲区中的图像中被标记为需要输出的0个、1个或多个图像,其中,所述标记模块(530)还将所述0个、1个或多个图像标记为不需要输出;
清空模块(550),用于从所述解码图像缓冲区中清空所述解码图像缓冲区中的所述图像中被标记为不用于参考且不需要输出的任意图像;
解码模块(560),用于解码所述当前图像;
数量确定模块(570),用于确定所述解码图像缓冲区中被标记为需要输出的图像的数量;以及
比较模块(580),用于将所述解码图像缓冲区中被标记为需要输出的图像的数量与值sps_max_num_reorder_pics[HighestTid]进行比较,其中,HighestTid指定所述最高层,并且所述值sps_max_num_reorder_pics[HighestTid]是从与所述最高层相关联的语法元素导出的,并且所述语法元素是从所述比特流中的序列参数集合获取的;所述多层中的每层i具有相关联的语法元素,该相关联的语法元素定义了相应值sps_max_num_reorder_pics[i];并且所述sps_max_num_reorder_pics[i]指示:当HighestTid等于i时,能够在解码顺序中位于所述多层视频序列中的任意图像之前且在输出顺序中位于该图像之后的最大允许图像数量,其中
所述输出模块(540)还在所述解码图像缓冲区中被标记为需要输出的图像的所述数量大于所述值sps_max_num_reorder_pics[HighestTid]的情况下,输出所述解码图像缓冲区中被标记为需要输出的所述图像中作为输出顺序中的第一图像的图像,以及所述标记模块(530)还在所述解码图像缓冲区中被标记为需要输出的图像的所述数量大于所述值sps_max_num_reorder_pics[HighestTid]的情况下,将所述解码图像缓冲区中被标记为需要输出的所述图像中作为输出顺序中的第一图像的所述图像标记为不需要输出,其中,在所述解码模块(560)解码所述当前图像后,所述数量确定模块(570)确定所述图像的数量,所述输出模块(540)输出所述图像,以及所述标记模块(530)标记所述图像。
8.根据权利要求6或7所述的解码器,其中所述解码器(400,500)是符合高效率视频编码HEVC的解码器(400,500)。
9.一种由编码器(600,700,900)执行的方法,所述方法包括:
在当前图像已解码且存储在解码图像缓冲区(625,725)中后,确定(S60)所述解码图像缓冲区(625,725)中被标记为需要输出的图像的数量,所述当前图像属于多层视频序列的由所述编码器(600,700,900)解码的最高层以外的层,所述多层视频序列包括多个图像层;
选择针对序列参数集中的语法元素的值sps_max_num_reorder_pics[HighestTid],其中,HighestTid指定所述最高层;所述多层中的每层i具有相关联的值sps_max_num_reorder_pics[i];并且所述值sps_max_num_reorder_pics[i]指示:当HighestTid等于i时,能够在解码顺序中位于所述多层视频序列中的任意图像之前且在输出顺序中位于该图像之后的最大允许图像数量;
如果所述解码图像缓冲区(625,825)中被标记为需要输出的图像的所述数量大于所述值sps_max_num_reorder_pics[HighestTid],将在所述解码图像缓冲区(625,725)中被标记为需要输出的所述图像中、作为输出顺序中的第一图像的图像标记(S62)为不需要输出。
10.一种由编码器(600,800)执行的方法,所述方法包括:
将解码图像缓冲区(625,825)中不存在于多层视频序列的当前图像的参考图像集中的所有图像标记(S70)为不用于参考,所述当前图像属于所述多层视频序列的由所述编码器(600,800)解码的最高层以外的层,所述多层视频序列包括多个图像层;
将所述解码图像缓冲区(625,825)中的所述图像中被标记为需要输出的0个、1个或多个图像标记(S71)为不需要输出;
从所述解码图像缓冲区(625,825)中清空(S72)所述解码图像缓冲区(625,825)中的所述图像中被标记为不用于参考且不需要输出的任意图像;
解码(S73)所述当前图像;
确定(S74)所述解码图像缓冲区(625,825)中被标记为需要输出的图像的数量;
选择(S50)针对序列参数集中的语法元素的值sps_max_num_reorder_pics[HighestTid],其中,HighestTid指定所述最高层;所述多层中的每层i具有相关联的值sps_max_num_reorder_pics[i];并且所述值sps_max_num_reorder_pics[i]指示:当HighestTid等于i时,能够在解码顺序中位于所述多层视频序列中的任意图像之前且在输出顺序中位于该图像之后的最大允许图像数量;
如果所述解码图像缓冲区(625,825)中被标记为需要输出的图像的所述数量大于所述值sps_max_num_reorder_pics[HighestTid],将所述解码图像缓冲区(625,825)中被标记为需要输出的所述图像中、作为输出顺序中的第一图像的图像标记(S76)为不需要输出,其中确定(S74)所述图像的数量、以及标记(S76)所述图像在解码(S73)所述当前图像之后执行。
11.一种编码器(900),包括:
数量确定模块(910),用于在当前图像已解码且存储在解码图像缓冲区中后,确定所述解码图像缓冲区中被标记为需要输出的图像的数量,所述当前图像属于多层视频序列的由所述编码器(900)解码的最高层以外的层,所述多层视频序列包括多个图像层;
比较模块(920),用于针对序列参数集中的语法元素将所述解码图像缓冲区中被标记为需要输出的图像的数量与值sps_max_num_reorder_pics[HighestTid]进行比较,其中,HighestTid指定所述最高层;所述多层中的每层i具有限定相应值sps_max_num_reorder_pics[i]的相关联的语法元素;并且所述值sps_max_num_reorder_pics[i]指示:当HighestTid等于i时,能够在解码顺序中位于所述多层视频序列中的任意图像之前且在输出顺序中位于该图像之后的最大允许图像数量;
标记模块(930),用于在所述解码图像缓冲区中被标记为需要输出的图像的所述数量大于所述值sps_max_num_reorder_pics[HighestTid]的情况下,将在所述解码图像缓冲区中被标记为需要输出的所述图像中、作为输出顺序中的第一图像的图像标记为不需要输出。
12.一种编码器(1000),包括:
标记模块(1010),用于将解码图像缓冲区中不存在于多层视频序列的当前图像的参考图像集中的所有图像标记为不用于参考,以及将所述解码图像缓冲区中的图像中被标记为需要输出的0个、1个或多个图像标记为不需要输出,其中,所述当前图像属于所述多层视频序列的由所述编码器(1000)解码的最高层以外的层,所述多层视频序列包括多个图像层;
清空模块(1020),用于从所述解码图像缓冲区中清空所述解码图像缓冲区中的所述图像中被标记为不用于参考且不需要输出的任意图像;
解码模块(1030),用于解码所述当前图像;
数量确定模块(1040),用于确定所述解码图像缓冲区中被标记为需要输出的图像的数量;以及
比较模块(1050),用于针对序列参数集中的语法元素将所述解码图像缓冲区中被标记为需要输出的图像的数量与值sps_max_num_reorder_pics[HighestTid]进行比较,其中,HighestTid指定所述最高层;所述多层中的每层i具有限定相应值sps_max_num_reorder_pics[i]的相关联的语法元素;并且所述值sps_max_num_reorder_pics[i]指示:当HighestTid等于i时,能够在解码顺序中位于所述视频序列中的任意图像之前且在输出顺序中位于该图像之后的最大允许图像数量,
其中,所述标记模块(1010)还在所述解码图像缓冲区中被标记为需要输出的图像的所述数量大于所述值sps_max_num_reorder_pics[HighestTid]的情况下,将所述解码图像缓冲区中被标记为需要输出的所述图像中作为输出顺序中的第一图像的图像标记为不需要输出,其中,在所述解码模块(1030)解码所述当前图像后,所述数量确定模块(1040)确定所述图像的数量,所述比较模块(1050)比较所述数量,以及所述标记模块(1010)标记所述图像。
13.根据权利要求11或12所述的编码器,其中所述编码器(900,1000)是符合高效率视频编码HEVC的编码器(900,1000)。
14.一种移动终端(1100),包括根据权利要求6到8任一项所述的解码器(400,500)和/或根据权利要求11到13任一项所述的编码器(900,1000)。
15.一种网络节点(2),包括根据权利要求6到8任一项所述的解码器(400,500)和/或根据权利要求11到13任一项所述的编码器(900,1000)。

说明书全文

视频序列图像的解码和编码

[0001] 分案申请说明
[0002] 本申请是申请日为2013年9月26日、申请号为201380050705.8(国际申请号PCT/SE2013/07093)的、题为“视频序列图像的解码和编码”的发明专利申请的分案申请。

技术领域

[0003] 本实施例总体上涉及对视频序列图像进行解码和编码,更具体地,涉及从与解码和编码图像有关的解码图像缓冲区输出或倾倒图像。

背景技术

[0004] H.264视频压缩
[0005] H.264(动态图像专家组-4高级视频编码(MPEG-4AVC))是最新的视频编码标准。其包括利用时间和空间冗余的基于的混合视频编码方案。H.264/AVC定义在包括很多解码处理的规范文档中,这些解码处理必须以指定顺序来执行,以使解码器符合标准。对编码器没有要求,但是一般情况下,编码器也执行大部分处理以获得良好的压缩效率。
[0006] H.264/AVC定义了存储解码后的解码图像的解码图像缓冲区(DPB)。这意味着要求解码器使用规定量的存储器以解码序列。DPB包含在解码未来图像期间用于参考的图像。这里的“用于参考”表示在解码另一个图像时使用特定图像来预测。用于参考的图像的像素值这时可用于预测当前正在解码的图像的像素值。这也称为间预测(Inter prediction)。DPB附加地包含等待输出的图像。这里的“输出”表示解码器将图像输出到解码器之外的功能。H.264规范说明了如何将比特流转换为解码图像然后将其输出,参见图1。输出图像可以例如被显示或写入磁盘。
[0007] DPB中的图像等待输出的一个常见原因是,将在该图像前输出的图像尚未完成解码。
[0008] 图2示出了三个图像A、B和C的示例。解码顺序是压缩格式图像被馈入解码器的顺序。通常来说,这与编码器编码图像的顺序相同。图2示出了这个示例中的解码顺序为A、B和C。输出顺序是解码图像输出的顺序。输出顺序不必与解码顺序相同,如图2中示例所示出的,输出顺序为A、C、B。图中箭头示出了哪一个图像用于每一个图像的参考:图像A用于图像B和C的参考。
[0009] 图2中,图像C在图像B之后解码但在其之前输出。当图像B已经解码时,其不能立即输出,因为图像C还没有解码并且必须在图像B之前输出。因此,图像B在解码后必须存储在DPB中,即使其不用于任何其他图像的参考。当解码图像C时,图像A也必须在DPB中存在,因为图像C使用图像A来参考。
[0010] 通过信号通知PictureOrderCount(POC)值,控制输出顺序。在比特流中存在用于传达每个图像的POC的语法元素,并且使用这些值来定义图像的输出顺序。
[0011] 为了跟踪DPB,H.264/AVC包含三个在图像解码后进行的处理:图像标记处理、图像输出处理和释放(free-up)处理。
[0012] 图像标记处理将图像标记为“用于参考”或“不用于参考”。标记为“用于参考”的图像可用于参考,意味着解码顺序中后续的图像在其解码处理中可使用该图像来参考。标记为“不用于参考”的图像不可被后续图像用于参考。编码器通过比特流来控制这一处理。在H.264/AVC比特流中有一个可选语法,当其存在时指示什么图像标记为“不用于参考”。该操作一般也称为存储管理控制操作(MMCO)。如果没有可选的MMCO语法,就定义先进先出机制,也称为“滑动窗口”处理。滑动窗口处理表示:当最后解码的图像导致DPB中的图像过多时,解码顺序中最早的图像自动标记为“不用于参考”。
[0013] 图像输出处理在图像标记处理之后进行,将图像标记为“需要输出”或“不需要输出”。标记为“需要输出”的图像尚未输出,而标记为“不需要输出”图像已经输出且不再等待输出。图像输出处理还输出图像。这表示该处理选择标记为“需要输出”的图像,输出它们,然后将它们标记为“不需要输出”。图像输出处理确定以什么顺序输出图像。需要注意的是,在一个具体图像解码后,图像输出处理可输出并标记零个、一个或多个图像。
[0014] 在解码器调用上述两个处理后,调用释放处理。清空同时标记为“不用于参考”和“不需要输出”的图像并从DPB移除。有时这也称为释放DPB图像槽之一。
[0015] 在H.264/ABC中,DPB的大小是有限的。这意味着因等待输出或使其可用于参考而能够存储的图像的数量是有限的。变量max_dec_frame_buffering表示DPB的大小,有时也称为DPB中图像槽的数量。编码器必须确保DPB的尺寸不会溢出。
[0016] 以上三个处理在标准中有所说明。这意味着解码器受到编码器的控制,因此解码器在输出顺序方面没有任何自由。这完全由图像输出处理和编码器发送的比特流中的有关元素确定。图3中示出了H.264/AVC的解码步骤的简化流程图
[0017] H.264中的图像输出处理定义了图像应当输出的顺序。以正确顺序输出图像的解码器在输出顺序上是遵从标准的。解码器可遵从H.264说明的图像输出顺序,但是有时可以使用变量num_reorder_frames来输出比图像输出处理所给出的图像更早的图像。num_reorder_frames表示解码顺序中在任意图像之前、输出顺序中在其后的最大图像数量。
[0018] 图4示出了图像B刚刚解码的示例。但是图像B不能输出,因为不知道图像C将在图像B之前还是之后输出。如果解码器已经确定输出顺序与解码顺序相同,则其可以向解码器指示num_reorder_frames值为0。从而编码器许诺在该示例中图像C将在图像B之后输出并且当图像B已解码时解码器可立即输出图像B。在这种情形中,当num_reorder_frames为0时,解码器中没有附加重排序延时。如果在该示例中num_reorder_frames设置为1,则图像C可能在图像B之前输出。当num_reorder_frames等于1时,存在1个图像的附加重排序延时,当num_reorder_frames等于2时,重排序延时为2个图像,如此类推。
[0019] HEVC视频压缩
[0020] 高效率视频编码(HEVC)也称为H.265,是由联合协作组-视频编码(JCT-VC)开发的视频编码标准。JVC-VC是MPEG和国际电报联盟电信标准化部(ITU-T)之间的协作项目。HEVC包括多种新的工具并且显著地比H.264/AVC更高效。HEVC还定义了每个图像的temporal_id,其对应于图像所属的时间层(temporal layer)。时间层是有序的并具有较低时间层从不依赖于较高时间层的性质。因而,可以移除较高时间层而不影响较低时间层。时间层的移除也称为时间缩放(scaling)。HEVC比特流包含语法元素max_sub_layers_minus1,其指定比特流中可存在的时间层的最大数量。解码器可解码所有的时间层或者仅解码时间层的子集。解码器实际解码的最高时间层也称为最高时间子层,并且可设置为等于或小于max_sub_layers_minus1指定的最大层数。这时,解码器解码等于或小于最高时间层的所有层。可通过外部装置设置最高时间子层。
[0021] 需要注意的是,以上说明并不专用于时间层,还适用于其他类型的层,例如空间层和质量层等。解码器随后解码的时间层称为最高解码层。
[0022] HEVC的解码流程与H.264/AVC稍有不同。HEVC具有DPB、将图像标记为“用于参考”和“不用于参考”的图像标记处理、将图像标记为“需要输出”和“不需要输出”的图像输出处理、以及释放处理。与H.264/AVC类似,HEVC也使用POC值来定义图像输出顺序。HEVC中的POC值用变量PicOrderCntVal表示,图像以PicOrderCntVal递增的顺序输出。
[0023] 然而,HEVC不具有MMCO或滑动窗口处理。作为替代,HEVC在每一个切片首部中显式地发送标记为“用于参考”的图像的列表。HEVC中的图像标记使用该列表,并确保在DPB中所列出的所有图像标记为“用于参考”并且在DPB中未列出的所有图像标记为“不用于参考”。列表称为参考图像集(RPS),并且在每一个切片首部中发送一个意味着DPB中参考标记的状态是显式的并在每一个切片中重复,这与H.264/AVC的情形不同。
[0024] 由于在HEVC中使用RPS,在解析图像的第一个切片首部之后,图像标记处理、图像输出处理和释放处理全部完成,参见图5。
[0025] 针对H.264/AVC说明的num_reorder_frames功能也存在于HEVC。HEVC比特流包含每一个时间层的语法元素,用max_num_reorder_pics[i]表示,其中i是时间层。max_num_reorder_pics[i]的功能与num_reorder_frames相同,但是这里的每一个码字指示了在相同或较低时间层中,解码顺序中在图像前、输出顺序中在图像后的最大允许图像数量。
[0026] 考虑图6的示例,其中解码顺序是A、B、C、D、E,输出顺序是A、D、C、E、B。这种图像结构使用了图像A和B属于最低时间层(层0)、图像C属于中间时间层(层1)且图像D和E属于最高时间层(层2)的时间层。图中箭头示出了哪些图像用于其他图像的参考。例如,图像A用于图像B的参考,因为存在从图像A到图像B的箭头。在HEVC中,max_num_reorder_pics的最佳用法是将其设置得尽可能低,以尽可能地降低输出延时。每一个时间层的max_num_reorder_pics的最低可能值在图6中示出。最低层为0,这时因为在层0中没有图像在解码顺序中在任意图像之前但是在输出顺序中在其后。针对层1,图像B在解码顺序中在图像C之前但是在输出顺序中在其后,以及针对层2,图像B和C在解码顺序中在图像D之前但是在输出顺序中在其后。
[0027] 如果解码器知道其将只解码时间层0,则一旦解码图像B,解码器潜在地可以输出图像B;但是如果解码器解码所有层,其不能输出图像B。此时,解码器必须等待直到在输出顺序中有两个解码图像在B之后。
[0028] JCTVC-K0030_v3,Proposed Editorial Improvement for High efficiency video coding(HEVC)Text Specification Draft 8,B.Bross等,JCT-VC of ITU-T SG16 WP3和ISO/IEC JTC1/SC29/WG11,2012年10月10至19日,Shanghai,第11次会议,公开日2012年9月12日,在第32页的第7.4.2.1节以及第64页的第7.4.2.2节讨论了max_num_reorder_pics的用法。
[0029] no_output_of_prior_pics_flag
[0030] H.264和HEVC比特流都指定了称为no_output_of_prior_pics_flag的标志。该标志存在于随机访问图像(RAP)的切片首部。随机访问图像是能够从其调谐到流中的图像。它们保证如果解码器从随机访问点开始解码也能够正确地解码未来的图像。不需要向解码器馈送包括在解码顺序中在随机访问图像之前的图像的任何数据来实现调谐。
[0031] no_output_of_prior_pics_flag指定了在随机访问图像的解码后如何处理解码图像缓冲区中先前解码的图像。简单地说,如果no_output_of_prior_pics_flag等于1,不应输出DPB中标记为“需要输出”的图像,但是如果no_output_of_prior_pics_flag等于0,则应当输出它们。
[0032] 考虑图7,图7示出了max_num_reorder_pics为0且图像C为no_output_of_prior_pics_flag等于1的随机访问图像的示例。H.264中,可以在图像B解码后立即输出图像B。当前的HEVC规范与此不同,因为解码器不在图像B解码后立即知道图像C是否是no_output_of_prior_pics_flag等于1的随机访问点。如果图像C不是这种图像,可以在图像B解码后立即输出图像B。但是如果图像C实际上是no_output_of_prior_pics_flag等于1的RAP图像,则不应输出图像B,因为在解码图像C的切片首部时,图像B标记为“需要输出”。
[0033] 由于在解析切片首部时HEVC中的图像输出处理已经完成并且no_output_of_prior_pics_flag是重要特征,在当前的HEVC标准中存在比H.264/AVC更高的输出延时。
[0034] 在JCTVC-K0030_v3第75页第7.4.7.1节以及第26页第C.5.2节公开了no_output_of_prior_pics_flag的用法的信息。
[0035] 利用HEVC中的RPS的优点在于,比H.264/AVC具有更好的纠错能。并且,时间缩放性更加直接。HEVC的问题在于,相比H.264/AVC,其在图像输出方面引入了附加的延时。H.264/AVC中,图像可以在解码后输出。HEVC中,在输出图像前,解码器必须等待下一个图像的切片首部的解析。这就引发了延时。
[0036] 因此,需要解决已有视频编码技术中的缺点,具体指在已有视频编码技术中可能出现的延时问题。

发明内容

[0037] 本发明的一般目的在于,提供视频序列图像的改进的解码和编码。
[0038] 本发明的具体目的在于,提供能够实现图像低输出延时的解码和编码。
[0039] 通过本文公开的实施例,可以实现上述目的以及其他目的。
[0040] 实施例的一个方案涉及一种由解码器执行的方法。所述方法包括在当前图像已解码且存储在解码图像缓冲区DPB中后,确定在所述DPB中标记为需要输出的图像的数量。所述方法还包括比较所述数量与值sps_max_num_reorder_pics[HighestTid]。HighestTid指定视频序列的由所述解码器解码的最高层。所述方法还包括:如果所述数量大于所述值,输出在所述DPB中标记为需要输出的所述图像中、作为输出顺序中的第一图像的图像。如果所述数量大于所述值,还标记所述图像为不需要输出。
[0041] 实施例的一个相关方案定义了一种解码器,被配置为,在表示视频序列图像的比特流的当前图像已解码且存储在DPB中后,确定在所述DPB中标记为需要输出的图像的数量。所述解码器还被配置为,比较所述数量与值sps_max_num_reorder_pics[HighestTid]。所述解码器还被配置为,如果所述数量大于所述值,输出在所述DPB中标记为需要输出的所述图像中、作为输出顺序中的第一图像的图像,以及如果所述数量大于所述值,标记所述图像为不需要输出。
[0042] 实施例的另一个相关方案定义了一种解码器,包括数量确定模块,所述数量确定模块在表示视频序列图像的比特流的当前图像已解码且存储在DPB中后,确定所述DPB中标记为需要输出的图像的数量。所述解码器还包括比较模块,用于比较所述数量与所述值sps_max_num_reorder_pics[HighestTid]。所述解码器还包括输出模块,用于在所述数量大于所述值的情况下,输出在所述DPB中标记为需要输出的所述图像中、作为输出顺序中的第一图像的图像。所述解码器附加地包括标记模块,用于在所述数量大于所述值的情况下,将所述图像标记为不需要输出。
[0043] 实施例的另一个方案涉及一种由编码器执行的方法。所述方法包括,在当前图像已解码且存储在DPB中后,确定在所述DPB中标记为需要输出的图像的数量。所述方法还包括比较所述数量与值sps_max_num_reorder_pics[HighestTid]。所述方法还包括,如果所述数量大于所述值,将在所述DPB中标记为需要输出的所述图像中、作为输出顺序中的第一图像的图像标记为不需要输出。
[0044] 实施例的一个相关方案定义了一种编码器,所述编码器被配置为,在当前图像已解码且存储在DPB中后,确定在所述DPB中标记为需要输出的图像的数量。所述编码器被配置为,比较所述数量与值sps_max_num_reorder_pics[HighestTid]。所述编码器还被配置为,如果所述数量大于所述值,将在所述DPB中标记为需要输出的所述图像中、作为输出顺序中的第一个图像的图像标记为不需要输出。
[0045] 实施例的另一个方案定义了一种编码器,包括数量确定单元,用于在当前图像已解码且存储在DPB中后,确定在所述解码图像缓冲区中标记为需要输出的图像的数量。所述编码器还包括比较模块,用于比较所述数量与值sps_max_num_reorder_pics[HighestTid]。所述编码器还包括标记模块,用于在所述数量大于所述值的情况下,将在所述解码图像缓冲区中标记为需要输出的所述图像中、作为输出顺序中的第一图像的图像标记为不需要输出。
[0046] 实施例的另一个方案涉及一种由解码器执行的方法。所述方法包括,解析视频序列将要解码的当前图像的切片首部。所述方法还包括,基于所述解析的切片首部,确定用于所述当前图像的参考图像集(RPS)。所述方法还包括,将DPB中没有在RPS中出现的所有图像标记为不用于参考。输出在DPB中的图像中标记为需要输出的0个、1个或多个图像,并标记将其标记为不需要输出。所述方法还包括,从DPB中清空在DPB中的图像中标记为不用于参考且不需要输出的任意图像。所述方法还包括,解码当前图像,以及确定在DPB中标记为需要输出的图像的数量。比较所述数量与从表示视频序列图像的比特流中的至少一个语法元素导出的值。如果所述数量大于所述值,输出在DPB中标记为需要输出的图像中、作为输出顺序中的第一图像的图像,并将其标记为不需要输出。在一个实施例中,确定所述图像的数量、比较所述数量、输出所述图像以及标记所述图像在解码所述当前图像之后执行。
[0047] 实施例的一个相关方案定义了一种解码器,所述解码器被配置为解析表示视频序列图像的比特流将要解码的当前图像的切片首部,以及基于所述解析的切片首部,确定用于所述当前图像的RPS。所述解码器还被配置为,将所述DPB中没有在所述参考图像集中出现的所有图像标记为不用于参考。所述解码器还被配置为,输出在所述DPB中的所述图像中标记为需要输出的0个、1个或多个图像,并标记所述0个、1个或多个图像为不需要输出。所述解码器附加地被配置为,从所述DPB中清空在所述DPB中的所述图像中标记为不用于参考且不需要输出的任意图像。在这个实施例中,所述解码器还被配置为,解码所述当前图像。所述解码器还被配置为,确定在所述DPB中标记为需要输出的图像的数量。所述解码器附加地被配置为,比较所述数量与从所述比特流中的至少一个语法元素导出的值。在这个实施例中,解码器被配置为:如果所述数量大于所述值,输出在所述DPB中标记为需要输出的所述图像中、作为输出顺序中的第一图像的图像,并将所述图像标记为不需要输出。所述解码器优选地被配置为,在解码所述当前图像后,确定所述图像的数量、比较所述数量、输出所述图像以及标记所述图像。
[0048] 实施例的另一个相关方案定义了一种解码器,所述解码器包括解析模块,用于解析表示视频序列图像的比特流将要解码的当前图像的切片首部。所述解码器还包括参考图像集确定模块,用于基于所述解析的切片首部,确定用于所述当前图像的RPS。所述解码器还包括标记模块,用于将所述DPB中没有在所述参考图像集中出现的所有图像标记为不用于参考,以及输出模块,用于输出在所述DPB中的所述图像中标记为需要输出的0个、1个或多个图像。所述标记模块还用于标记所述0个、1个或多个图像为不需要输出。所述解码器包括图像清空模块,用于从所述DPB中清空在所述DPB中的所述图像中标记为不用于参考且不需要输出的任意图像。所述解码器还包括解码模块,用于解码所述当前图像。所述解码器还包括数量确定模块,用于确定在所述DPB中标记为需要输出的图像的数量,以及比较模块,用于比较所述数量与从所述比特流中的至少一个语法元素导出的值。在这个实施例中,如果所述数量大于所述值,所述输出单元还用于输出在所述DPB中标记为需要输出的所述图像中、作为输出顺序中的第一图像的图像。如果所述数量大于所述值,所述标记模块还用于将所述图像标记为不需要输出。在优选的实施例中,在所述解码模块解码所述当前图像后,所述数量确定模块确定所述图像的数量、所述比较模块比较所述数量、所述输出模块输出所述图像以及所述标记模块标记所述图像。
[0049] 实施例的另一个方案涉及一种由编码器执行的方法。所述方法包括,将DPB中没有在视频序列的当前图像的RPS中出现的所有图像标记为不用于参考,以及将在所述DPB中的所述图像中标记为需要输出的0个、1个或多个图像标记为不需要输出。所述方法还包括,从所述DPB中清空在所述DPB中的所述图像中标记为不用于参考且不需要输出的任意图像。所述方法还包括,解码所述当前图像。确定在所述DPB中标记为需要输出的图像的数量,并与从至少一个已定义的语法元素导出的值比较。所述方法还包括,如果所述数量大于所述值,将在所述DPB中的所述图像中,标记为需要输出,在输出顺序中的第一个图像标记为不需要输出。在优选的实施例中,确定所述图像的数量、比较所述数量、以及标记所述图像在解码所述当前图像之后执行。
[0050] 实施例的一个相关方案定义了一种编码器,所述编码器被配置为,将DPB中没有在视频序列的当前图像的RPS中出现的所有图像标记为不用于参考。所述编码器还被配置为,将在所述DPB中的所述图像中标记为需要输出的0个、1个或多个图像标记为不需要输出,以及从所述DPB中清空在所述DPB中的所述图像中标记为不用于参考且不需要输出的任意图像。所述编码器还被配置为,解码所述当前图像。所述编码器附加地被配置为,确定在所述DPB中标记为需要输出的图像的数量,并与从至少一个已定义的语法元素导出的值比较。所述编码器还被配置为,如果所述数量大于所述值,将在所述DPB中标记为需要输出的所述图像中、作为输出顺序中的第一图像的图像标记为不需要输出。在优选的实施例中,所述编码器被配置为,在解码所述当前图像之后,确定所述图像的数量、比较所述数量、以及标记所述图像。
[0051] 实施例的另一个相关方案定义了一种编码器,所述编码器包括标记模块,用于将解码图像缓冲区中没有在视频序列图像的参考图像集中出现的所有图像标记为不用于参考,并将在所述解码图像缓冲区中的所述图像中标记为需要输出的0个、1个或多个图像标记为不需要输出。所述编码器还包括图像清空模块,用于从所述解码图像缓冲区中清空在所述解码图像缓冲区中的所述图像中标记为不用于参考且不需要输出的任意图像。所述编码器还包括解码模块,用于解码所述当前图像。所述编码器还包括数量确定模块,用于确定在所述解码图像缓冲区中标记为需要输出的图像的数量,以及比较模块,用于比较所述数量与从至少一个已定义的语法元素导出的值。在这个实施例中,如果所述数量大于所述值,所述标记模块还用于将在所述解码图像缓冲区中标记为需要输出的所述图像中、作为输出顺序中的第一图像的图像标记为不需要输出。在优选的实施例中,在所述解码模块解码所述当前图像后,所述数量确定模块确定所述图像的数量、所述比较模块比较所述数量、所述标记模块标记所述图像。
[0052] 实施例的更多方案涉及包括根据上述解码器和/或根据上述编码的移动终端,以及包括根据上述解码器和/或根据上述编码的网络。附图说明
[0053] 通过参考以下结合附图的描述,能够最佳地理解实施例及其更多的目的和优点,其中:
[0054] 图1是H.264/AVC解码器的示意性概览;
[0055] 图2示出了用于多层视频序列示例的输出和解码顺序;
[0056] 图3是H.264/AVC的简化流程图;
[0057] 图4示出了用于多层视频序列示例的输出和解码顺序。
[0058] 图5是简化的HEVC解码流程图;
[0059] 图6示出了用于多层视频序列示例的输出和解码顺序以及时间层;
[0060] 图7示出了视频序列示例的输出和解码顺序;
[0061] 图8是根据实施例由解码器执行的方法的流程图;
[0062] 图9是图8中方法的附加、可选步骤的流程图。
[0063] 图10是图8中方法的附加、可选步骤的流程图。
[0064] 图11是根据另一实施例由解码器执行的方法的流程图;
[0065] 图12是图9或图11中方法的附加、可选步骤的流程图;
[0066] 图13是图8或图11中方法的附加、可选步骤的流程图;
[0067] 图14是实施例的简化的解码流程图;
[0068] 图15是另一个实施例的简化的解码流程图;
[0069] 图16是根据实施例的解码器的示意框图
[0070] 图17是根据另一个实施例的解码器的示意框图;
[0071] 图18是根据另一个实施例的解码器的示意框图;
[0072] 图19是根据另一个实施例的解码器的示意框图;
[0073] 图20是根据另一个实施例的解码器的示意框图;
[0074] 图21是根据实施例由编码器执行的方法的流程图;
[0075] 图22是根据另一个实施例由编码器执行的方法的流程图;
[0076] 图23是根据实施例的编码器的示意框图;
[0077] 图24是根据另一个实施例的编码器的示意框图;
[0078] 图25是根据另一个实施例的编码器的示意框图;
[0079] 图26是根据另一个实施例的编码器的示意框图;
[0080] 图27是根据另一个实施例的编码器的示意框图;
[0081] 图28是根据实施例的移动终端的示意框图;
[0082] 图29是根据实施例的网络节点的示意框图;以及
[0083] 图30示出了多层视频序列示例的输出和解码顺序。

具体实施方式

[0084] 贯穿整个附图,相同的附图标记用于相似或对应的单元。
[0085] 本实施例总体上涉及视频序列图像的解码和编码,更具体地,涉及从与解码和编码图像有关的解码图像缓冲区输出或倾倒图像。因而,实施例实现了降低输出延时并实现比当前技术方案更早的输出图像。
[0086] 在一般性的实施例中,在解码图像时,解码器或编码器(编码期间还执行图像解码,以从先前已编码的图像获得重构的参考图像)确定在解码图像缓冲区(DPB)中标记为需要输出的图像的数量,并将该数量与从比特流中的语法元素导出的值比较。如果DPB中标记为需要输出的图像的数量大于从比特流中的语法元素导出的值,执行修改的输出处理,或者输出在DPB中标记为需要输出的图像中输出顺序为第一个的图像(用图像输出处理#2表示)并将其标记为不需要输出。
[0087] 以下将先从解码侧再从编码侧说明各具体实现的实施例及方案。
[0088] 本文中标记为需要输出意味着图像等待输出,例如用于显示或存储。相应地,本文中标记为不需要输出意味着图像不等待输出,并且可以是已经输出。相应地,标记为用于参考意味着图像在另一个图像解码时用于预测。标记为不用于参考意味着图像不能用于后续图像的参考或预测。以上所提的标记不应在字面上解释为给图像标记上“需要输出”、“不需要输出”、“用于参考”、或“不用于参考”的标签。与此相反,标记应当解释为用某种方式将图像标识为其应当/不应输出以及其可用作参考图像/不用作参考图像。可以用各种实施例来实现标记。例如,图像可存储在DPB的特定部分,该特定部分专用于应当输出或不应输出的图像或者可用作参考图像或不应用作参考图像的图像。备选地,图像可加标签或者以其他方式与标志或其他码字相关联,用于将图像标识为需要输出vs不需要输出以及用于参考vs不用于参考。在使用标志实现的情形中,标志可具有第一值(0bin或1bin)以指示备选中的一种,并具有第二值(1binor0bin)以指示另一种备选。例如,第一标志可用在图像的输出方面,第二标志可用在参考的方面。
[0089] 因此,一般性的方案涉及由解码器执行的方法。在所述方法中,解码器确定在DPB中标记为需要输出的图像的数量,并将该数量与从比特流中的语法元素导出的值比较。如果在DPB中标记为需要输出的图像的数量大于与从比特流中的语法元素导出的值,执行修改的输出处理,或者输出在DPB中标记为需要输出的图像中输出顺序为第一个的图像(本文中用图像输出处理#2表示)并将其标记为不需要输出。
[0090] 该一般性的方案优选在符合HEVC的解码器(本文中也称为符合H.265的解码器)中实现。在这种情形中,实现实施例涉及由符合HEVC的解码器执行的方法,并包括以下步骤。符合HEVC的解码器确定在DPB中标记为需要输出的图像的数量。符合HEVC的解码器还将该数量与从表示视频序列图像的比特流中的至少一个语法元素导出的值比较。如果该数量大于该值,符合HEVC的解码器还输出在DPB中标记为需要输出的图像中输出顺序为第一个的图像。此外,如果该数量大于该值,则符合HEVC的解码器将输出图像标记为不需要输出。
[0091] 图8是根据实施例由解码器执行的方法的流程图。该方法包括:在步骤S1中且在当前图像已解码且存储在DPB中后,确定在DPB中标记为需要输出的图像的数量。下一个步骤S2包括将该数量与值sps_max_num_reorder_pics[HighestTid]比较。如果该数量大于该值,该方法前进到步骤S3。步骤S3包括,输出在DPB中标记为需要输出的图像中输出顺序为第一个的图像。然后,在步骤S4中,将在步骤S3中输出的图像标记为不需要输出。因此,如果该数量大于该值,执行该步骤S4。
[0092] 在这个实施例中,sps_max_num_reorder_pics[HighestTid]用作从表示视频序列图像的比特流中的至少一个语法元素所导出的值的优选表示。此外,HighestTid指定视频序列由解码器解码的最高层。因此,如果视频序列包括一个或多个时间层,则HighestTid指示最高的时间子层,并且如果视频序列作为替代包括另一种类型的层(例如一个或多个空间层、质量层等),则HighestTid指示最高的解码层。
[0093] 在实施例中,sps_max_num_reorder_pics[i]指示当HighestTid等于i时,解码顺序中可在编码视频序列的任意图像之前,输出顺序中在该图像之后的最大允许图像数量。max_num_reorder_pics[i]的前缀sps指示语法元素优选存在于比特流的序列参数集(SPS)之中。
[0094] 因此,在这种实施例中,从比特流中的每一层可导出一个值,并且将在步骤S2的比较中使用的值就是针对视频序列的解码器实际解码的最高层导出的值。请注意,该最高解码层可等于或小于max_sub_layers_minus1语法元素(例如vps_max_sub_layers_minus1或sps_max_sub_layers_minus1,这依赖于该语法元素是从视频参数集(VPS)还是SPS获取的)所指定视频序列中的最大层数。
[0095] 因此,在具体实施例中,视频序列是包括多个(例如至少两个)图像层的多层视频序列。此时,多个层中的每一层优选具有定义了相应值的关联语法元素。此时,在步骤S2的比较中使用的值就是从(在这个实施例中与多层的解码器所解码的最高层相关联的)语法元素获得的值。
[0096] 在具体实施例中,sps_max_num_reorder_pies[i]指示在相同或较低层(例如,和层i相比,相同或更低的时间层)中,解码顺序在一个图像之前输出顺序在该图像之后的最大允许图像数量。
[0097] 在实施例中,如果在步骤S2的比较中确定该数量不大于该值,则优选地,方法结束并且不输出或标记图像。因而,在这种情形中,步骤S3和S4省略而不执行,参见右侧的虚线。
[0098] 在实施例中,在当前图像已解码并存储在DPB中后,步骤S2到S4可仅执行一次。备选地,可以执行步骤S2到S4形成的循环,参见左侧虚线,直到在DPB中标记为需要输出的图像的数量不再大于值sps_max_num_reorder_pies[HighestTid]。每当执行步骤S2-S4的循环,通过步骤S4中将在步骤S3中输出的图像标记为不需要输出,将DPB中标记为需要输出的图像的数量减1。这意味着,在当前图像已解码并存储在DPB中后,如果数量≤sps_max_num_reorder_pies[HighestTid],则步骤S3或S4可执行0次;如果number=sps_max_num_reorder_pies[HighestTid]+1,执行一次;或者如果数量>sps_max_num_reorder_pies[HighestTid]+1,执行多于一次,即,如果数量=sps_max_num_reorder_pies[HighestTid]+n,则执行n次。一旦在步骤S2的比较确定数量不再大于值sps_max_num_reorder_pies[HighestTid],方法结束。
[0099] 步骤S1中确定在DPB中标记为需要输出的图像的数量优选在当前图像已解码并存储在DPB中以后执行。
[0100] 针对已解码并存储在DPB中的视频序列的每一个图像,优选执行一次上文公开并在图8中示出的方法。因而,优选地,一旦认为当前图像已解码(即,在图像上一个解码单元已解码,且当前解码图像存储在DPB中的空图像存储缓冲区(即,图像槽)中),即刻执行该方法。
[0101] 图9是图8中方法的附加、可选步骤的流程图。方法在步骤S10开始,该步骤包括解析视频序列要解码的当前图像的切片首部。下一个步骤S11基于所解析的切片首部,确定当前图像的参考图像集(RPS);在步骤S12,将DPB中没有在RPS中出现的所有图像标记为不用于参考。接下来的步骤S13包括:输出在DPB中的图像中标记为需要输出的0个、1个或多个(即,多于一个的)图像。该步骤S13还包括将输出的0个、1个或多个图像标记为不需要输出。步骤S14包括:从DPB中清空或移除在DPB中的图像中标记为不用于参考且不需要输出的任意图像。在步骤S15,接着解码当前图像。然后,该方法前进到图8的步骤S1。因此,在这个实施例中,在步骤S15解码当前图像之后,执行步骤S1的确定图像的数量、步骤S2的比较数量、步骤S3的输出图像以及步骤S4的标记图像。
[0102] 除了步骤S15的解码当前图像,该步骤优选还包括将当前图像标记为用于参考,或者在可选的实施例中,将当前图像标记为用于短期参考。优选地,当前图像还优选根据步骤S10所获得的变量PicOutputFlag的值而标记为需要输出或不需要输出。
[0103] 一般来说,编码视频序列(即比特流)包括网络抽象层(NAL)单元。基本上,一个NAL单元包括具有对应切片首部的切片,其中切片首部包括用于该切片以及视频有效载荷数据的控制信息;或者,NAL单元包括参数集,例如VPS、SPS和图像参数集(PPS)。参数集包括控制信息。视频序列图像可包括单个切片或多个切片。因而,图9的步骤S10包括解析包括图像切片的NAL单元的切片首部部分。如果图像包括多个切片且从而分布在包括各切片首部的多个NAL单元中,则优选为图像的每一个切片执行步骤S10。然而,优选只为图像的切片之一(通常是图像的第一个切片)执行步骤S11到S14。
[0104] 步骤S10中所解析的切片首部包括使解码器能够生成RPS的信息。RPS是与当前图像相关联的参考图像的集合,由解码顺序中在当前图像之前并且可用于当前图像或图像序列中按照解码顺序在当前图像之后的任意图像的参考(即帧间预测)的所有参考图像组成。
[0105] 在步骤S10获得并用于确定步骤S11中RPS的信息可包括,例如,适用于当前切片的、对包括在参数集(例如SPS)中RPS语法结构进行标识的标识符。这类适用于HEVC的标识符的一个示例是short_term_ref_pic_set_idx。那么,参数集包括定义了一个或多个RPS的语法元素,例如num_short_term_ref_pic_sets定义了包括在SPS中的short_term_ref_pic_set()语法元素的数量,其中short_term_ref_pic_set()语法元素定义了用于当前图像的候选RPS。
[0106] 备选地,步骤S10中获得的信息可直接用于步骤S11中确定RPS。该信息可包括例如short_term_ref_pic_set()语法元素,其中short_term_ref_pic_set()语法元素定义了当前图像的RPS。
[0107] 确定RPS的更多信息可见于WO 2013/002700,以及JCTVC-J1003_d7,High efficiency video coding(HEVC)text specification draft 8,B.Bross,JCT-VC of ITU-T SG16 WP3和ISO/IEC JTC1/SC29/WG11第十次会议,Stockholm,2012年7月11-20日,第7.3.2.2、7.3.5.1、7.3.5.2、7.4.2.2、7.4.5.1、7.4.5.2和8.3.2节。
[0108] 如上文所提到的,RPS指定了将保持在DPB中的视频序列图像,即,在解码当前图像和/或解码在解码顺序中在当前图像之后的图像时可用作参考图像。这意味着存储在DPB中但是没有列在RPS中的任何参考图像都不再用作参考图像。因此,步骤S12从而包括将DPB中但未在RPS中标识的图像标记为不用于参考。
[0109] 步骤S13中的输出图像可包括输出标记为需要输出的一个图像、或者输出标记为需要输出的多于一个的图像、或者甚至根本不输出任何图像。步骤S13中输出的任何图像根据输出顺序输出,优选地根据图像顺序计数(POC)的最小值的顺序来输出。
[0110] 然后,步骤S13中输出的任何图像标记为不需要输出,因为该图像已经输出。如果输出了0个图像,在步骤S13中必然也不执行标记。
[0111] 标记为不用于参考且不需要输出的图像将不再需要,不作为参考图像也不用于输出。因此,步骤S14从DPB中清空或移除任何这样标记的图像,从而释放图像存储缓冲区,即DPB中图像槽。
[0112] 根据已知的图像解码方法(例如在HEVC/H.265标准中所指定的),执行当前图像的解码。因此,步骤S35中的解码包括:通常利用存储在DPB中作为参考图像的一个或多个先前已解码的图像的像素值,生成当前图像中像素或样本的像素值。
[0113] 图9示出的实施例中,在图8中示出并包括步骤S1-S4的方法可看作是附加或进一步的图像输出处理,在上文已作为图像输出处理#2被提到。从而该实施例使得甚至在步骤S15的当前图像已解码之后但在开始处理比特流中的下一个图像之前(即,在执行针对解码顺序中的下一个图像执行步骤S10之前),能够在步骤S3中输出图像。
[0114] 图14概述了这个实施例。因此,在一个实施例中,在图像解码后,增加一个附加的图像输出处理步骤,以允许更早的图像输出,参见图14。根据实施例,一种解码器方法可包括和/或一种解码器可被配置为执行以下有序步骤。
[0115] 1.解析图像P的第一切片首部的、包括RPS的切片首部。
[0116] 2.完成图像标记处理,例如,通过来自切片首部的RPS,可将图像标记为不用于参考。
[0117] 3.完成可以输出图像的图像输出处理。
[0118] 4.解码图像P。
[0119] 5.在图像P解码后,解码器确定在DPB中标记为需要输出的图像的数量,并将该数量与从比特流中的语法元素(例示为sps_max_hum_reorder_pics[HighestTid])导出的值比较。
[0120] 6.如果在DPB中标记为需要输出的图像的数量大于从比特流中的语法元素导出的值,则输出在DPB中标记为需要输出的图像中输出顺序为第一个的图像,并将其标记为不需要输出。因而,根据该实施例,引入了图像输出处理#2。
[0121] 7.针对下一个图像Q,通过重复上述步骤1-6解码图像Q。
[0122] 图8中公开的方法还可实现为修改的输出处理的一部分,例如用于HEVC。在这个方法中,修改已有的图像输出处理,以允许更早的图像输出。
[0123] 该修改针对在背景技术部分讨论的关于no_output_of_prior_pics_flag的问题提供了解决方案。该解决方案与上文讨论的实施例相类似,区别在于,其没有增加附加的输出处理,而是在no_output_of_prior_pics_flag等于1时修改已有的HEVC输出处理。
[0124] 图10是在实现上文所提的实施例时,图8中方法的附加、可选步骤的流程图。步骤S20包括:解析视频序列的随机访问图像(RAP)(也称为帧内随机访问点图像(IRAP))的切片首部,以获得标志no_output_of_prior_pics_flag的值。如果no_output_of_prior_pics_flag的值为1,该方法前进到图8的步骤S1。因此,在这个实施例中,如果no_output_of_prior_pics_flag的值为1,执行步骤S1中的确定数量、步骤S2中的比较数量、步骤S3中的输出图像以及步骤S4中标记图像。
[0125] 相应地,如果no_output_of_prior_pics_flag的值等于0,该方法结束,也不执行修改的输出处理。
[0126] 当这个实施例应用于HEVC时,该方法优选地包括以下附加步骤:基于步骤S20中所解析的切片首部,确定用于随机访问图像的RPS(相比于图9中步骤S11)。该方法还包括将DPB中未在RPS中列出的所有图像标记为不用于参考(相比于图9中步骤S12)。解码随机访问图像(相比图9中步骤S15)。在这个实施例中,在标记未在RPS中列出的图像之后,但在解码随机访问图像之前,执行步骤S1确定数量、步骤S2比较数量、步骤S3输出图像以及步骤S4标记图像。
[0127] 图15是这个实施例的简化解码流程图。根据实施例,一种解码器方法可包括和/或一种解码器可被配置为,执行以下有序步骤。
[0128] 1)解析图像P的第一个切片首部的切片首部。
[0129] 2)完成图像标记处理。
[0130] 3)完成可以输出图像的图像输出处理。修改图像输出处理,使得如果no_output_of_prior_pics_flag等于1,以下适用:
[0131] a.解码器确定在DPB中标记为需要输出的图像的数量,并将该数量与从比特流中的语法元素导出的值比较。
[0132] b.如果在DPB中标记为需要输出的图像的数量大于从比特流中的语法元素导出的值,则输出在DPB中标记为需要输出的图像中输出顺序为第一个的图像,并将其标记为不需要输出。
[0133] c.将在DPB中标记为需要输出的所有余下的图像标记为不需要输出。不输出它们。
[0134] 4)解码图像P。
[0135] 图11是根据另一个实施例由解码器执行的方法。该方法包括:在步骤S30,解析视频序列的要解码的当前图像的切片首部。在步骤S31,基于所解析的切片首部,确定当前图像的RPS。下一个步骤S32包括:将DPB中没有在RPS中出现的所有图像标记为不用于参考。在步骤S33,输出在DPB中的图像中标记为需要输出的0个、1个或多个图像,并将其标记为不需要输出。下一个步骤S34包括:从DPB中清空或移除在DPB中的图像中标记为不用于参考且不需要输出的任意图像。然后,在步骤S35,解码当前图像。
[0136] 上述步骤S30到S35基本上对应于上文中讨论并在图9中示出的步骤S10到S15。
[0137] 然后,该方法前进到步骤S36,该步骤包括确定在DPB中标记为需要输出的图像的数量。在步骤S37,将所述数量与从表示视频序列图像的比特流中的至少一个语法元素导出的值比较。如果所述数量大于所述值,该方法前进到步骤S38和S39。步骤S38包括:输出在DPB中标记为需要输出的图像中输出顺序为第一个的图像。步骤S39包括:将在步骤S38中输出的图像标记为不需要输出。
[0138] 在这个实施例中,在步骤S35解码当前图像之后,执行步骤S36确定图像的数量、步骤S37比较数量、步骤S38输出图像以及步骤S39标记图像。
[0139] 步骤S36到S39对应于上文讨论并在图8中示出的步骤S1到S4,区别在于,在步骤S37中与确定的数量进行比较的值不必是sps_max_num_reorder_pics[HighestTid],作为替代,其可以是从比特流中存在的其他语法元素导出的值,以下进一步讨论。
[0140] 在实施例中,如果在步骤S37的比较中确定该数量不大于值,方法优选地结束,并且不输出或标记图像。因此,在该情况下,省略而不执行步骤S38和S39(参见右侧虚线)。
[0141] 在实施例中,在当前图像已解码并优选地存储在DPB中后,步骤S37到S39可仅执行一次。备选地,可以执行步骤S37到S39形成的循环(参见左侧虚线),直到在DPB中标记为需要输出的图像的数量不再大于所述值。每当执行步骤S37到S39的循环,通过在步骤S39中将在步骤S38中输出的图像标记为不需要输出,将DPB中标记为需要输出的图像的数量减1。
[0142] 图12是图11中方法的附加、可选步骤的流程图,还适用于图8和9示出的实施例。该方法从图11中步骤S35或图9中步骤S15的解码当前图像继续。下一个步骤S40包括:存储DPB中已解码的当前图像到空图像存储缓冲区,即图像槽。在步骤S41,将已解码的当前图像标记为需要输出或不需要输出。图像也可选地标记为用于短期参考,即用作参考图像。该步骤S41优选地基于分配给当前图像的PicOutputFlag来执行。因而,如果该标志的值为1,则已解码的当前图像标记为需要输出,否则,即标志的值为0,已解码的当前图像标记为不需要输出。PicOutputFlag可从可应用于在场当前图像的比特流中的语法元素导出,例如,基于可存在于当前图像的切片首部之中的语法元素pic_output_flag。
[0143] 然后,该方法前进到确定在DPB中标记为需要输出的图像的数量的图11的步骤S36或图8的步骤S1。
[0144] 这里将要说明选择在图11的步骤S37和图8的步骤S2的比较中所使用的值的各种实施例。
[0145] 在实施例中,视频序列是包括多个图像层的多层视频序列。此时,多个层中的每一层具有定义了在输出处理中使用的各值的关联语法元素。该方法还包括附加、可选步骤,如图13流程图中所示。该方法从图11的步骤S35或从图8的步骤S1继续。下一个步骤S50包括选择从与由多个层的解码器解码的最高层相关联的语法元素导出的值。然后,该方法前进到使用该所选择的值的图11的步骤S37或图8的步骤S2。
[0146] 在这个实施例中,步骤S37和步骤S2优选包括:将在步骤S26或S1中确定的数量与sps_max_num_reorder_pics[HighestTid]的值比较。如果所述数量大于所述值sps_max_num_reorder_pics[HighestTid],则该方法前进到步骤S38或S3,在这个实施例中包括,输出在DPB标记为需要输出的所有图像中具有最小PicOrderCntVal的DPB中的图像。PicOrderCntVal表示图像的图像顺序计数值,其进而定义了存储在DPB中的图像的输出顺序。
[0147] 在实施例的特定实现方案中,视频序列是包括多个图像层的多层视频序列。在这种情形中,每一层都具有相应值,即层数i的sps_max_num_reorder_pics[i]。这时,要使用的值是与最高解码层(即,由解码器解码的最高层,例如,如果这些层是不同的时间层,则是最高的子层)相关联的值。
[0148] 在另一个实施例中,视频序列是包括多个图像层的多层视频序列。这时,多个层的每一层都具有定义了相应值的关联语法元素。该方法还包括附加、可选的步骤,如图13的流程图所示。该方法从图11的步骤S36继续。下一个步骤S50包括选择从语法元素导出的值,所述语法元素与多个层的最高层相关联。然后,该方法前进到使用所选择的值的步骤S37。
[0149] 在这个实施例中,步骤S37优选包括,将在步骤S36中确定的数量与sps_max_num_reorder_pics[sps_max_sub_layers_minus1]的值比较。如果所述数量大于所述值sps_max_num_reorder_pics[sps_max_sub_layers_minus1],则该方法前进到步骤S38,在这个实施例中,步骤S38包括输出在DPB标记为需要输出的所有图像中具有最小PicOrderCntVal的DPB中的图像。语法元素sps_max_sub_layers_minus1指定了视频序列的层的最大数量。
[0150] 在实施例的特定实现方案中,视频序列是包括多个图像层的多层视频序列。在这种情形中,每一层都具有相应的值,即层数i的sps_max_num_reorder_pics[i]。这时,要使用的值是与比特流中的最高解码层相关联的值。
[0151] 在另一个实施例中,视频序列是包括多个图像层的多层视频序列。这时,多个层的每一层都具有定义了相应值的关联语法元素。该方法还包括附加、可选的步骤,如图13的流程图所示。该方法从图11的步骤S36继续。下一个步骤S50包括,选择从语法元素导出的值,所述语法元素与多个层中已解码的当前图像所属的层相关联。然后,该方法前进到使用所选择的值的步骤S37,
[0152] 在另一个实施例中,视频序列是包括多个图像层的多层视频序列。这时,多个层的每一层都具有定义了相应值的关联语法元素。该方法还包括附加、可选的步骤,如图13的流程图所示。该方法从图11的步骤S36继续。下一个步骤S50包括,选择相应值中的最大值。
[0153] 图11示出的方法可应用于作为视频序列的随机访问图像的当前图像。在这种情形中,步骤S30优选包括:解析随机访问图像的切片首部,以获得no_output_prior_flag标志的值。在这种情形中,基于该标志的值,步骤S36中的确定数量、步骤S37中的比较数量、步骤S38中的输出图像以及步骤S39中的标记图像是条件性的。因此,在可选的实施例中,如果no_output_prior_flag标志的值为1,执行上述步骤S36到S39。
[0154] 在实施例中,图9的步骤S12和图11的步骤S32中所执行的标记图像优选包括:将DPB中没有在RPS中出现的所有图像标记为不用于参考。这些步骤可选地还包括,将DPB中在RPS中出现的所有图像标记为用于参考。然而,一般来说,一旦图像已解码并存储在DPB中,则该图像标记为用于参考。因此,步骤S12和S32通常包括将不再需要的图像重新标记为用于参考。
[0155] 在实施例中,图8的步骤S3和图11的步骤S38中所执行的输出图像优选包括:如果在步骤S2或S37中确定该数量大于该值,输出在DPB标记为需要输出的图像中具有最小图像顺序计数值的图像。图像顺序计数值优选地由参数PicOrderCntVal表示。
[0156] 在实施例中,图8的步骤S3中和图11的步骤S38中所执行的输出图像优选地在解析编码视频序列的要解码的下一图像的切片首部前执行。
[0157] 在实施例中,图8或图11中执行方法包括从参数集中取得至少一个语法元素的附加步骤,所述参数集与比特流相关联并且从由PPS、SPS和VPS组成的组中选出。基于存在于当前图像的切片首部之中的PPS标识符,标识PPS。通过存在于PPS中的SPS标识符来标识应用于当前图像的SPS,所述PPS通过存在于当前图像的切片首部之中的PPS标识符来标识。相应地,通过存在于SPS中的VPS标识符来标识应用于当前图像的VPS,所述SPS应用于当前图像。在特定实施例中,从SPS获取至少一个语法元素。
[0158] 可应用于利用no_output_prior_pics_flag的实现的特定实施例包括附加步骤:如果标志no_output_prior_pics_flag为1,优选将在DPB中标记为需要输出的所有余下的图像标记为不需要输出。
[0159] 在相关的实施例中,该方法包括另一个步骤:如果标志no_output_prior_pics_flag为1,清空DPB中的所有图像,而不输出任何图像。这时,DPB的充满度(fullness)设置为0,以指示DPB为空。
[0160] 以下将进一步讨论各示例性实施例。
[0161] 示例性实施例1
[0162] 在一个实施例中,在图像解码后,增加附加的图像输出处理步骤,以实现更早的图像输出,参见图14。
[0163] 根据实施例,解码器方法可包括和/或解码器可被配置为,执行以下有序的步骤:
[0164] 1.解析图像P的第一个切片首部的切片首部。
[0165] 2.完成图像标记处理。
[0166] 3.完成可以输出图像的图像输出处理。
[0167] 4.解码图像P。
[0168] 5.在图像P解码后,解码器确定在DPB中标记为“需要输出”的图像的数量,并将该数量与从比特流中的语法元素(通过实施例9例示)导出的值比较。
[0169] 6.如果在DPB中标记为“需要输出的”图像的数量大于从比特流中的语法元素导出的值,则输出在DPB中标记为“需要输出”的图像中输出顺序为第一个的图像,并将其标记为“不需要输出”。因而,根据该实施例,引入了图像输出处理#2。
[0170] 7.解码下一个图像Q。
[0171] 示例性实施例2
[0172] 与示例性实施例1相同,其中,该值用比特流中的语法元素的单个码字来表示。
[0173] 示例性实施例3
[0174] 与示例性实施例2相同,其中,该值用序列参数集(例如图像参数集(PPS)、序列参数集(SPS)、或视频参数集(VPS))中的码字来表示。
[0175] 示例性实施例4
[0176] 与实施例1到3相同,其中,针对比特流中的每一层导出一个依赖于层的值,并且将在比较中使用的值是针对与图像P相同的层导出的值。
[0177] 示例性实施例5
[0178] 与实施例1到3相同,其中,针对比特流中的每一层导出一个值,并且将在比较中使用的值是针对比特流的最高层导出的值。
[0179] 示例性实施例6
[0180] 与实施例1到3相同,其中,针对比特流中的每一层得到一个值,并且将在比较中使用的值是所有层的最大值。
[0181] 示例性实施例7
[0182] 与实施例5相同,其中最高层定义为最高子层。
[0183] 示例性实施例8
[0184] 与实施例1到7相同,其中输出顺序中的第一个图像定义为在DPB中具有最小PicOrderCntVal值的图像。PicOrderCntVal如上所述并且定义了POC。
[0185] 示例性实施例9
[0186] 与实施例4到8相同,其中层是时间层。
[0187] 示例性实施例10
[0188] 实施例1、2、3、5、8和9的组合是一个优选实施例。在当前HEVC规范(JCTVC-K0030_v3)中表示该实施例可能会得到以下HEVC规范在C.5.3部分中的改变,其中粗体是新增的文本。
[0189] C.5.3图像解码、标记和存储,以及可能输出一个图像。
[0190] 在从CPB中移除包含当前图像的访问单元n的上一个解码单元时以下内容即刻发生。
[0191] 当前图像被认为是在图像的上一个解码单元已解码后解码的。当前解码图像存储在DPB中的空图像存储缓冲区中,并且以下适用:
[0192] 1.-如果当前解码图像具有等于1的PicOutputFlag,将其标记为“需要输出”。
[0193] 2.-否则(当前解码图像具有等于0的PicOutputFlag),将其标记为“不需要输出”。
[0194] 如果当前解码图像是参考图像,将其标记为“用于参考”,否则(当前解码图像不是参考图像),将其标记为“不用于参考”。
[0195] 在当前解码图像已存储在DPB中后,DPB中标记为“需要输出”的图像的数量大于sps_max_num_reorder_pics[sps_max_sub_layers_minus1]时,剪切并输出在DPB的所有图像中具有最小PicOrderCntVal值的DPB中的图像,并将其标记为“不需要输出”。
[0196] 示例性实施例11
[0197] 实施例1、2、3、7、8和9的组合是另一个优选实施例。在当前HEVC规范(JCTVC-K0030_v3)中表示该实施例可能会得到以下HEVC规范在C.5.3部分中的改变,其中粗体是新增的文本。
[0198] C.5.3图像解码、标记和存储,以及可能输出一个图像。
[0199] 在从CPB中移除包含当前图像的访问单元n的上一个解码单元时以下内容即刻发生。
[0200] 当前图像被认为是在图像的上一个解码单元已解码后解码的。当前解码图像存储在DPB中的空图像存储缓冲区中,并且以下适用:
[0201] 1.-如果当前解码图像具有等于1的PicOutputFlag,将其标记为“需要输出”。
[0202] 2.-否则(当前解码图像具有等于0的PicOutputFlag),将其标记为“不需要输出”。
[0203] 如果当前解码图像是参考图像,将其标记为“用于参考”,否则(当前解码图像是非参考图像),将其标记为“不用于参考”
[0204] 在当前解码图像已存储在DPB中后,DPB中标记为“需要输出”的图像的数量大于sps_max_num_reorder_pics[HighestTid]时,剪切并输出在DPB的所有图像中具有最小PicOrderCntVal值的DPB中的图像,并将其标记为“不需要输出”。
[0205] 示例性实施例12
[0206] 在一个实施例中,修改已有的图像输出处理步骤,以实现更早的图像输出,参见图15。
[0207] 该修改针对上述关于no_output_of_prior_pics_flag的问题提供了解决方案。该解决方案与示例性实施例1到11类似,区别在于,没有增加附加的输出处理,而是在no_output_of_prior_pics_flag等于1时修改已有的HEVC输出处理,如下所示。
[0208] 根据实施例,一种解码器方法可包括和/或一种解码器可被配置为执行以下有序步骤。
[0209] 1.解析图像P的第一个切片首部的切片首部。
[0210] 2.完成图像标记处理。
[0211] 3.完成可以输出图像的图像输出处理。修改图像输出处理,使得如果no_output_of_prior_pics_flag等于1,以下适用:
[0212] a.解码器确定在DPB中标记为“需要输出”的图像的数量,并将该数量与从比特流中的语法元素导出的值比较。
[0213] b.如果在DPB中标记为“需要输出”的图像的数量大于从比特流中的语法元素导出的值,则输出在DPB中标记为“需要输出”的图像中输出顺序为第一个的图像,并将其标记为“不需要输出”。
[0214] c.将在DPB中标记为“需要输出”的所有余下的图像标记为“不需要输出”。不输出它们。
[0215] 4.解码图像P。
[0216] 示例性实施例2到12也适用于该示例性实施例12。
[0217] 示例性实施例13
[0218] 示例性实施例12和示例性实施例2、3、7、8和9的组合是一个优选实施例。在当前HEVC规范(JCTVC-K0030_v3)中表示该实施例可能会得到以下HEVC规范在C.5.3部分中的改变,其中粗体是新增的文本。
[0219] C.3.1从DPB中移除图像
[0220] 在解码当前图像之前从DPB中移除图像在访问单元n(包含当前图像)的第一解码单元的CPB移除时间即刻发生,并继续以下内容。
[0221] 调用在子条款8.3.2中指定的用于参考图像集的解码处理。
[0222] 如果当前图像是IDR或BLA图像,以下适用:
[0223] 1.当IDR或BLA不是解码的第一个图像,并且,pic_width_in_luma_samples或者pic_height_in_luma_samples或者针对从活动序列参数集导出的任意可能值i的sps_max_dec_pic_buffering[i]分别不同于从pic_width_in_luma_samples或者pic_height_in_luma_samples或者针对前一个图像活动的序列参数集导出的sps_max_dec_pic_buffering[i]时,HRD推断no_output_of_prior_pics_flag等于1,而不管no_output_of_prior_pics_flag的实际值如何。
[0224] 注意:关于pic_width_in_luma_samples、pic_height_in_luma_samples、或者sps_max_dec_pic_buffering[i]的改变,解码器实现应当试图比HRD更得体地处理图像或DPB尺寸改变。
[0225] 2.当no_output_of_prior_pics_flag等于1或推断为1时,以下有序步骤适用:
[0226] 1.当DPB中标记为“需要输出”的图像的数量大于sps_max_num_reorder_pics[HighestTid]时,剪切并输出在DPB的所有图像中具有最小PicOrderCntVal值的DPB中的图像,并将其标记为“不需要输出”。
[0227] 2.清空DPB中所有的图像存储缓冲区,而不输出它们所包含的图像,并且将DPB充满度设置为0。
[0228] 从DPB中移除使以下所有条件为真的DPB中的所有图像k:
[0229] -图像k标记为“不用于参考”;
[0230] -图像k具有等于0的PicOutputFlag,或者其DPB输出时间小于或等于当前图像n的第一解码单元(表示为解码单元m)的CPB移除时间;即to,dpb(k)<=tr(m)
[0231] 当从DPB中移除图像时,DPB的充满度减1。
[0232] 以下将参考图30说明本文所公开的实施例相比于现有技术(参见JCTVC-K0030_v3,216-217页,C.5.1部分)的优点。JCTVC-K0030_v3中的现有技术解决方案使用参数sps_max_num_reorder_pics[TemporalID]来确定是否输出任意图像。具体来说,JCTVC-K0030_v3规定了:当DPB中标记为需要输出的图像的数量大于sps_max_num_reorder_pics[TemporalID]时,则重复调用在子条款C5.2.1中指定的倾倒处理,直到存在一个空的图像存储缓冲区,以存储当前解码图像。
[0233] 图30中的数字指出了视频序列中图像的解码顺序。这些图像应当从左到右输出,即I0、b5、B3、b6、B2、b7、B4、B8和P1。该数字还指出了层数,即不同层的TemporalId和每一层的参数sps_max_num_reorder_pics。如果如JCTVC-K0030_v3中提出的结合利用sps_max_num_reorder_pics[TemporalID]解析切片首部来倾倒或输出图像,则输出处理可以如下:
[0234]
[0235] 然而,在处理图像B4时输出图像B3不正确,因为图像b5应当在图像B3之前输出。
[0236] 如果使用本文所公开的关于倾倒的实施例,即,在解码当前图像并利用HighesTId=3之后输出,则实现以下结果。
[0237]
[0238] 如果使用时间缩放并且仅解码层0到2,则HighesTid为2并且根据实施例实现以下结果:
[0239]
[0240] 因此,本文所公开的实施例能够以示例中的正确顺序输出图像,如图30所示,但是JCTVC-K0030_v3中的现有技术解决方案在解析切片首部后调用倾倒处理时无法给出正确的输出顺序。
[0241] 以上结合图8到15所说明的步骤、功能、过程、模块和/或框可利用常规技术(例如分立电路或集成电路技术)实现为硬件,包括通用电子电路和专用电路二者。
[0242] 具体示例包括一个或多个合理配置的数字信号处理器和其他已知电子电路,例如用于执行专用功能的互连分立逻辑门或者专用集成电路(ASIC)。
[0243] 备选地,以上结合图8到15说明的步骤、功能、过程、模块和/或框可实现为软件,例如由包括一个或多个处理器的适当处理电路执行的计算机程序
[0244] 处理器能够执行在存储于计算机程序产品(例如存储器形式)中的计算机程序中包含的软件指令。各计算机程序产品可以是作为随机存取存储器(RAM)和只读存储器(ROM)的任意组合的存储器。各存储器包括永久存储器,例如可以是磁存储器、光存储器、固态存储器或者甚至远程安装存储器中的任一个或组合。
[0245] 因此,上文提出并在图8到15中示出的流程图可认为是一个或多个处理器执行时的计算机流程图。对应的装置可定义为功能模块的组,其中由处理器执行的每一个步骤对应于一个功能模块。在这种情形中,功能模块实现为在处理器上运行的计算机程序。
[0246] 处理电路的示例包括但不限于,一个或多个微处理器、一个或多个数字信号处理器(DSP)、一个或多个中央处理单元(CPU)、视频加速硬件、和/或任意合适的可编程逻辑电路,例如一个或多个现场可编程门阵列(FPGA)或者一个或多个可编程逻辑控制器(PLC)。
[0247] 应当理解,能够重用实现了所提出技术的任意常规设备或单元的通用处理能力。还能够重用已有软件,例如通过重编程已有软件或通过增加新的软件组件
[0248] 根据一个方案,提供了一种被配置为执行根据上文所公开的任意实施例的方法的解码器。所述解码器被配置为:在表示视频序列图像的比特流的当前图像已解码且存储在DPB中后,确定在DPB中标记为需要输出的图像的数量。所述解码器还被配置为:将所述数量与值sps_max_num_reorder_pics[HighestTid]比较。所述解码器还被配置为:如果所述数量大于所述值,输出在DPB中标记为需要输出的图像中输出顺序为第一个的图像。所述解码器还附加地被配置为:如果所述数量大于所述值,将(输出)图像标记为不需要输出。
[0249] 在实施例中,解码器100包括处理器110,所述处理器110被配置为执行本文先前已公开的方法步骤,参见图8以及可选地图9、10和12到14。解码器100还可包括与处理器110相连的存储器120,参见图16。
[0250] 图16是根据实施例的解码器100的示意框图。解码器100被配置为接收表示视频序列图像的比特流10并解码比特流10。解码器100包括处理器110和包括DPB 125的存储器120。处理器110被配置为:在当前图像已解码且存储在DPB 125中后,确定在DPB 125中标记为需要输出的图像的数量。处理器110还被配置为:比较所述数量与sps_max_num_reorder_pics[HighestTid]的值14。处理器110还被配置为:如果所述数量大于所述值,输出在DPB 
125中标记为需要输出的图像中输出顺序为第一个的图像。处理器110还附加地被配置为:
如果所述数量大于所述值,将(输出)图像标记为不需要输出。
[0251] 图16中,解码器100被示为包括处理器110。该处理器110可实现为例如处理电路形式的单个处理器或多个处理器。
[0252] 因而,图16示出了解码器100的计算机实现。在这个特定示例中,上述步骤、功能、过程、模块和/或框的至少一部分实现在计算机程序中,计算机程序加载到存储器120中用于由处理器110执行。处理器110和存储器120彼此互联,实现常规软件执行。可选的输入/输出(未示出)还可与处理器110和/或存储器120互连,实现编码图像的比特流10的输入以及解码图像的输出。
[0253] 术语“计算机”应当在一般意义上解释为能够执行程序代码或计算机程序指令以执行特定处理、确定或计算任务的任意系统、设备或装置。
[0254] 在实施例中,处理器110优选被配置为:解析视频序列的要解码的当前图像的切片首部12。处理器110还被配置为:基于所解析的切片首部12,确定当前图像的RPS。处理器110还被配置为:将DPB 125中没有在RPS中出现的所有图像标记为不用于参考。处理器110附加地被配置为:输出在DPB 125中的图像中标记为需要输出的0个、1个或多个图像,并将所述0个、1个或多个图像标记为不需要输出。处理器110还优选被配置为:从DPB 125中清空或移除在DPB 125中的图像中标记为不用于参考且不需要输出的任意图像。处理器110还被配置为:优选地利用以编码形式提供的视频有效载荷数据16,解码当前图像。在这个实施例中,处理器110被配置为:在解码当前图像后,确定所述图像的数量,比较所述数量,输出所述图像以及标记所述图像。
[0255] 在实施例中,处理器110可选地被配置为:解析视频序列的随机访问图像的切片首部12,以获得no_output_prior_pics_flag标记的值。在这种情形中,处理器110可选地被配置为:当(且仅当)no_output_prior_pics_flag标记的值为1时,确定所述数量,比较所述数量,输出所述图像以及标记所述图像。
[0256] 实施例的另一个方案涉及一种解码器,所述解码器被配置为:解析视频序列的要解码的当前图像的切片首部。解码器还被配置为:基于所解析的切片首部,确定当前图像的RPS。解码器还被配置为:将DPB中没有在RPS中出现的所有图像标记为不用于参考。解码器附加地被配置为:输出在DPB中的图像中标记为需要输出的0个、1个或多个图像,并将所述0个、1个或多个图像标记为不需要输出。解码器还优选被配置为:从DPB中清空或移除在DPB中的图像中标记为不用于参考且不需要输出的任意图像。解码器还被配置为解码当前图像。在这个实施例中,解码器被配置为:确定在DPB中标记为需要输出的图像的数量。解码器还被配置为:比较所述数量与从比特流中的至少一个语法元素导出的值。解码器还被配置为:如果所述数量大于所述值,输出在DPB中标记为需要输出的图像中输出顺序为第一个的图像。解码器附加地被配置为:如果所述数量大于所述值,标记所述图像为不需要输出。这意味着,在这个实施例中解码器被配置为:在解码当前图像后,确定图像的数量、比较所述数量、输出所述图像以及标记所述图像。
[0257] 在实施例中,编码器100被配置为执行本文先前公开的方法步骤,参见图11以及可选地图12、13和15。编码100还可以包括与处理器110相连的存储器120,参见图16。
[0258] 因此,在这个实施例中,解码器100包括处理器110和包括DPB 125的存储器120。处理器110被配置为:解析视频序列的要解码的当前图像的切片首部12。处理器110还被配置为:基于所解析的切片首部12,确定当前图像的RPS。处理器110还被配置为:将DPB 125中没有在RPS中出现的所有图像标记为不用于参考。处理器110附加地被配置为:输出在DPB 125中的图像中标记为需要输出的0个、1个或多个图像,并将所述0个、1个或多个图像标记为不需要输出。处理器110还优选被配置为:从DPB 125中清空或移除在DPB 125中的图像中标记为不用于参考且不需要输出的任意图像。处理器110还被配置为解码当前图像。在这个实施例中,处理器110被配置为:确定在DPB 125中标记为需要输出的图像的数量。处理器110还被配置为:将所述数量与从比特流中的至少一个语法元素14导出的值比较。处理器110还被配置为:如果所述数量大于所述值,输出在DPB中标记为需要输出的图像中输出顺序为第一个的图像。处理器110附加地被配置为:如果所述数量大于所述值,将所述图像标记为不需要输出。这意味着,在这个实施例中处理器110被配置为:在解码当前图像后,确定图像的数量、比较所述数量、输出所述图像以及标记所述图像。
[0259] 在实施例中,处理器110优选被配置为:在DPB 125中存储已解码的当前图像并将所述已解码的当前图像标记为需要输出或不需要输出,如本文先前所公开的。
[0260] 在实现的实施例中,处理器110优选被配置为:比较所述数量与值sps_max_num_reorder_pics[HighestTid]。在这个实现实施例中,处理器110被配置为:如果所述数量大于所述值sps_max_num_reorder_pics[HighestTid],输出在DPB中标记为需要输出的所有图像中具有最小PicOrderCntVal值的在DPB中的图像。
[0261] 在另一个实现实施例中,当前图像是视频序列的随机访问图像。在这种情形中,处理器110可选地被配置为:解析随机访问图像的切片首部12,以获得标志no_output_prior_pics_flag的值。这时,处理器110可选地被配置为:如果标志no_output_prior_pics_flag的值为1,确定所述数量,比较所述数量,输出所述图像以及标记所述图像。
[0262] 如果视频序列是包括多个图像层的多层视频序列,其中多个层的每一层具有定义了相应值的关联语法元素,则处理器110优选被配置为:选择从与多层中多层解码器100所解码的最高层相关联的语法元素导出的值,优选为sps_max_num_reorder_pics。
[0263] 在实施例中,处理器110优选被配置为:如果所述数量大于所述值,输出在DPB 125标记为需要输出的图像中具有最小图像顺序计数值的图像。
[0264] 在实施例中,处理器110优选被配置为:在解析视频序列的要解码的下一个图像的切片首部之前,输出所述图像。
[0265] 图17是解码器200的另一个实现示例的示意框图。该示例具体适用于解码器200的硬件实现。解码器200包括输入单元210,输入单元210被配置为:接收表示视频序列图像的比特流,并在包括DPB225的相连存储器220中存储比特流。解码器还包括与存储器220相连的数量确定单元230。数量确定单元230被配置为:在当前图像已解码且存储在DPB 225中后,确定DPB 225中标记为需要输出的图像的数量。比较器240与数量确定单元230相连,并被配置为:比较所述数量与所述值sps_max_num_reorder_pics[HighestTid]。解码器200还包括与所述比较器240相连以及优选地与存储器220相连的输出单元250。输出单元250被配置为:如果所述数量大于所述值,输出在DPB 225中标记为需要输出的所述图像中输出顺序为第一个的图像。标记单元260与输出单元260相连,并被配置为:如果所述数量大于所述值,将所述图像标记为不需要输出。
[0266] 比较器240优选与数量确定单元230相连,以接收数量确定单元230确定的图像的数量。相应地,输出单元250优选与比较器240相连,以从比较器240接收所确定的数量是否大于值sps_max_num_reorder_pics[HighesTid]的信息。标记单元260优选与输出单元250相连,以接收输出单元250输出哪个图像的信息。
[0267] 图18是解码器300的另一个实现示例的示意框图。该示例具体适用于解码器300的硬件实现。解码器200包括输入单元310,输入单元310被配置为:接收表示视频序列图像的比特流,并在包括DPB325的相连存储器320中存储比特流。解析单元370与存储器320相连,并被配置为:解析视频序列的要解码的当前图像的切片首部。解码器300包括与解析单元370相连并优选与存储器320相连的参考图像集确定单元380。参考图像集确定单元380被配置为:基于所解析的切片首部,确定当前图像的RPS。标记单元360与存储器320相连,并被配置为:将DPB 325中没有在RPS中出现的所有图像标记为不用于参考。解码器300还包括与存储器320相连并优选与比较器340相连的输出单元350。输出单元350被配置为:输出在DPB 
325中的图像中标记为需要输出的0个、1个或多个图像,其中所述标记单元360被配置为将所述0个、1个或多个图像标记为不需要输出。图像清空单元390与存储器320相连,并被配置为:从DPB 325中清空或移除在DPB 325中的图像中标记为不用于参考且不需要输出的任意图像。解码单元305与存储器320相连,并被配置为解码当前图像。
[0268] 图18的解码器300还包括与存储器320相连并且还优选与解析单元370和比较器340相连的数量确定单元330。数量确定单元330被配置为,确定在DPB 225中标记为需要输出的图像的数量。先前提到的比较器340被配置为,将所述数量与从比特流中的至少一个语法元素导出的值比较。在这个实施例中,输出单元350还被配置为:如果所述数量大于所述值,输出在DPB 225中标记为需要输出的图像中输出顺序为第一个的图像。标记单元360还被配置为:如果所述数量大于所述值,将所述图像标记为不需要输出。
[0269] 在优选实施例中,在解码单元305已解码当前图像后,数量确定单元330被配置为确定图像的数量,比较器340被配置为比较所述数量,输出单元350被配置为输出所述图像以及标记单元360被配置为标记所述图像。
[0270] 参考图像集确定单元380优选与解析单元370相连,以接收存在于所解析的切片首部之中并用于确定RPS的信息。参考图像集确定单元380优选还与标记单元360相连,以向标记单元360提供RPS或者在RPS中列出的图像信息。比较器340还优选与数量确定单元330相连,以接收由数量确定单元330确定的图像的数量。相应地,输出单元350优选与比较器340相连,以从比较器340接收所确定的数量是否大于所述值的信息。标记单元360优选与输出单元350相连,以接收输出单元350输出哪个图像的信息。
[0271] 如上文所指出的,解码器可备选地定义为一组功能模块,其中功能模块实现为在处理器上运行的计算机程序。
[0272] 图16是示出包括处理器110和关联存储器120的解码器100的示例的示意框图。
[0273] 因而,驻留在存储器120中的计算机程序可组织为合适的功能模块,这些功能模块被配置为当由处理器110执行时,执行上述步骤和/或任务的至少一部分。图19示出了这些功能模块的示例。因而,图19是示出包括一组功能模块410到440的解码器400的示例的示意框图。这些模块包括:数量确定模块410,用于在表示视频序列图像的比特流的当前图像已解码且存储在DPB中后,确定在DPB中标记为需要输出的图像的数量。解码器400还包括:比较模块420,用于比较所述数量(优选地从数量确定模块410接收)与值sps_max_num_reorder_pics[HighestTid]。如果所述数量大于所述值(可选地但是优选地由比较模块420确定),解码器400的输出模块430用于输出在DPB中标记为需要输出的图像中输出顺序为第一个的图像。解码器400还包括:标记模块440,如果所述数量大于所述值(可选地但是优选地由比较模块420确定),用于将所述图像标记为不需要输出。
[0274] 图20是示出具有一组功能模块510到580的解码器500的另一个示例的示意框图。解码器500包括:解析模块510,用于解析表示视频序列图像的比特流的要解码的当前图像的切片首部。解码器500的参考图像集确定模块520用于基于切片首部(优选由解析模块510解析)确定当前图像的RPS。解码器500还包括:标记模块530,用于将DPB中没有在所述参考图像集中出现的所有图像(可选地但优选地由参考图像集确定模块520确定)标记为不用于参考;以及输出模块540,用于输出在DPB中的图像中标记为需要输出的0个、1个或多个图像。在实施例中,标记模块530还用于将所述0个、1个或多个图像标记为不需要输出。解码器
500还包括:图像清空模块550,用于从DPB中清空或移除在DPB中的图像中标记为不用于参考且不需要输出的任意图像;以及解码模块560,用于解码当前图像。解码器500附加地还包括:数量确定模块560,用于确定在DPB中标记为需要输出的图像的数量;以及比较模块570,用于比较所述数量(可选地但是优选地由数量确定模块560确定)与从比特流中的至少一个语法元素导出的值。
[0275] 在实施例中,如果所述数量大于所述值(可选地但是优选地由比较模块570确定),输出模块540还用于输出在DPB中标记为需要输出的图像中输出顺序为第一个的图像。如果所述数量大于所述值(可选地但是优选地由比较模块570确定),标记模块530还用于将所述图像标记为不需要输出。
[0276] 在实施例中,在解码模块560解码当前图像后,数量确定模块570确定所述图像的数量、比较模块580比较所述数量、输出模块540输出所述图像以及标记模块540标记所述图像。
[0277] 图19和图20中示出的解码器400和500的实施例还可以可选地操作为执行本文先前所公开的各种实现实施例(例如参考图9、10、12到15)。
[0278] 在实施例中,计算机程序包括程序代码,当所述程序代码被处理器110(参见图16)或计算机执行时,使处理器110或计算机执行以上说明的并在图8到15中示出的步骤、功能、过程和/或框。
[0279] 软件或计算机程序可实现为计算机程序产品,其通常携带于或存储在计算机可读介质上。计算机可读介质可包括一个或多个可移除或不可移除的存储设备,包括但不限于ROM、RAM、紧致盘(CD)、数字多用途盘(DVD)、通用串行总线存储器(USB)、硬盘驱动(HDD)存储设备、闪存、或者任意其他常规存储设备。因而,计算机程序可加载到计算机或等效的处理设备的操作存储器中,由其处理电路来执行。
[0280] 图16到20示出的解码器100、200、300、400、500优选是符合HEVC的解码器。然而应当注意,实施例不限于HEVC。
[0281] 根据一个方案,提供了一种由编码器执行的方法。在所述方法中,编码器确定在DPB中标记为需要输出的图像的数量,并比较该数量与从比特流中的语法元素导出的值。如果在DPB中标记为需要输出的图像的数量大于从比特流中的语法元素导出的值,执行修改的输出标记处理,或者将在DPB中图像中标记为需要输出的图像中在输出顺序中第一个的图像标记为不需要输出。
[0282] 图21是根据实施例的由编码器执行的方法的流程图。所述方法包括:在步骤S60中并且在当前图像已解码且存储在DPB中后,确定在DPB中标记为需要输出的图像的数量。下一个步骤S61包括比较该数量与值sps_max_num_reorder_pics[HighestTid],其中HighestTid指定了由视频序列的编码器解码的最高层。如果该数量大于该值,所述方法前进到步骤S62。步骤S62包括:将在DPB中标记为需要输出的图像中输出顺序为第一个的图像标记为不需要输出。
[0283] 图21在编码器中执行的方法与图8在匹配解码器中执行的对应方法基本类似。不同之处在于,编码器一般不输出任何图像,但这在解码器中执行。因此,图21示出的方法的实施例优选缺少图8的由解码器所执行的对应方法的输出步骤S3。
[0284] 在实施例中,在当前图像已解码时,优选地出现两种标记,一种用于输出,一种用于参考。因此,在实施例中,这些标记优选在步骤S60之前完成,因为它会影响标记为用于输出的图像的数量。如果当前图像具有等于1的PicOutputFlag,则优选将当前图像也计入。
[0285] 在实施例中,如果在步骤S61的比较中确定所述数量不大于所述值,则所述方法优选结束且不标记图像。因而,在这种情形中,步骤S62省略且不执行,参见右侧的虚线。
[0286] 实施例中,在当前图像已解码并存储在DPB中后,步骤S61到S62可仅执行一次。备选地,可以执行步骤S61到S62形成的循环(参见左侧虚线),直到在DPB中标记为需要输出的图像的数量不再大于值sps_max_num_reorder_pics[HighestTid]。每当执行步骤S61到S62的循环,通过步骤S62中的标记,将DPB中标记为需要输出的图像的数量减1。
[0287] 图22是根据另一个实施例的由编码器执行的方法的流程图。所述方法包括:在步骤S70,将DPB中没有在RPS中出现的所有图像标记为不用于参考。所述方法还包括:在步骤S71,将在DPB中的图像中标记为需要输出的0个、1个或多个图像标记为不需要输出。在步骤S72,从DPB中清空或移除在DPB中的图像中标记为不用于参考且不需要输出的任意图像。下一个步骤S73包括解码当前图像。所述方法还包括:在步骤S74,确定在DPB中标记为需要输出的图像的数量;以及在步骤S75,比较所述数量与从表示视频序列图像的比特流中的至少一个语法元素导出的值。如果所述数量大于所述值,前进到步骤S76,步骤S76包括:将在DPB中标记为需要输出的图像中输出顺序为第一个的图像标记为不需要输出。在优选实施例中,步骤74确定所述图像的数量、步骤S75比较所述数量以及步骤S76标记所述图像在步骤S73解码当前图像之后执行。
[0288] 图22在编码器中执行的方法与图11在匹配解码器中执行的对应方法基本类似。不同之处在于,编码器一般不输出任何图像,但这在解码器中执行。因此,图22示出的方法的实施例优选缺少图11的由解码器所执行的对应方法的输出步骤S33和步骤S38。此外,在图22的方法中,编码器不接收任何比特流,因而不需要解析切片首部以获得用于确定当前图像的RPS的信息。与此相反,编码器自身生成并确定当前图像的RPS信息。因此,编码器通常不执行在图11中由解码器执行的对应方法的步骤S30和S31。
[0289] 在实施例中,如果在步骤S75的比较中确定所述数量不大于所述值,则所述方法优选结束且不标记图像。因而,在这种情形中,步骤S76省略且不执行,参见右侧的虚线。
[0290] 在实施例中,在当前图像已解码并存储在DPB中后,步骤S75到S76可仅执行一次。备选地,可以执行步骤S75到S76形成的循环(参见左侧虚线),直到在DPB中标记为需要输出的图像的数量不再大于所述值。每当执行步骤S75到S76的循环,通过步骤S76中的标记,将DPB中标记为需要输出的图像的数量减1。
[0291] 以上结合解码器执行的方法所讨论的实施例还可以由编码器来执行。
[0292] 例如,根据实施例,一种编码器方法可包含和/或一种编码器可配置为,执行以下有序步骤:
[0293] 1.编码图像P。
[0294] 2.在编码图像P后,编码器确定在DPB中标记为“需要输出”的图像的数量,并比较所述与可从比特流中的语法元素导出的值。应当注意的是,这涉及编码器中的DPB。编码器和解码器中的DPB状态相同。解码器中的比较将完全相同。HEVC规范指定了解码器将做什么但编码器将跟从解码器,即,编码器做解码器所将要做的。
[0295] 3.如果DPB中标记为“需要输出”的图像的数量大于可从比特流中的语法元素导出的值,则将在DPB中标记为“需要输出”的图像中输出顺序为第一个的图像标记为“不需要输出”。所述图像可以可选地从编码器输出。
[0296] 4.编码下一个图像Q。
[0297] 以上结合图21和22所说明的步骤、功能、过程、模块和/或框可利用常规技术(例如分立电路或集成电路技术)实现为硬件,包括通用电子电路和专用电路二者。
[0298] 具体示例包括一个或多个合理配置的数字信号处理器和其他已知电子电路,例如用于执行专用功能的互连分立逻辑门或者ASIC。
[0299] 备选地,以上结合图21和22说明的步骤、功能、过程、模块和/或框可实现为软件,例如由包括一个或多个处理器的合适处理电路执行的计算机程序。
[0300] 处理器能够执行包含在存储于计算程序产品(例如存储器形式)中的计算机程序中的软件指令。各计算机程序产品可以是RAM和ROM的任意组合的存储器。各存储器包括永久存储器,例如可以是磁存储器、光存储器、固态存储器或者甚至远程安装存储器中的任一个或组合。
[0301] 因此,上文提出并在图21和22中示出的流程图可认为是一个或多个处理器执行时的计算机流程图。对应的装置可定义为功能模块的组,其中由处理器执行的每一个步骤对应于一个功能模块。在这种情形中,功能模块实现为在处理器上运行的计算机程序。
[0302] 处理电路的示例包括但不限于,一个或多个微处理器、一个或多个DSP、一个或多个CPU、视频加速硬件、和/或任意合适的可编程逻辑电路,例如一个或多个FPGA或者一个或多个PLC。
[0303] 还应当理解,能够重用实现了所提出技术的任意常规设备或单元的通用处理能力。还能够重用已有软件,例如通过重编程已有软件或通过增加新的软件组件。
[0304] 根据一个方案,提供了一种被配置为执行所述方法的编码器。所述编码器被配置为:在当前图像已解码且存储在DPB中后,确定在DPB中标记为需要输出的图像的数量。所述编码器还被配置为:比较所述数量与值sps_max_num_reorder_pics[HighestTid]。所述编码器还被配置为:如果所述数量大于所述值,将在DPB中标记为需要输出的图像中输出顺序为第一个的图像标记为不需要输出。
[0305] 在实施例中,解码器600包括处理器610,所述处理器610被配置为执行本文先前已公开的方法步骤,参见图21。编码器600还可包括与处理器610相连的存储器620,参见图23。
[0306] 图23是根据实施例的编码器600的示意框图。编码器600被配置为将视频序列图像编码到比特流中。编码器600包括处理器610和存储器620。存储器620包括DPB 625。在实施例中,处理器610被配置为:在当前图像已解码且存储在DPB 625中后,确定在DPB 625中标记为需要输出的图像的数量。处理器610还被配置为,比较所述数量与值sps_max_num_reorder_pics[HighestTid]。处理器610还被配置为:如果所述数量大于所述值,将在DPB 625中标记为需要输出的图像中输出顺序为第一个的图像标记为不需要输出。
[0307] 图23中,编码器600被示为包括处理器610。该处理器610可实现为例如处理电路形式的单个处理器或多个处理器。
[0308] 因而,图23示出了解码器600的计算机实现。在这个特定示例中,上述步骤、功能、过程、模块和/或框的至少一部分实现在计算机程序中,计算机程序加载到存储器620中用于处理器610的执行。处理器610和存储器620彼此互联,实现常规软件执行。可选的输入/输出(未示出)还可与处理器610和/或存储器620互连,实现要编码的图像的输入以及比特流10的输出。
[0309] 实施例的另一个方案涉及一种编码器,所述编码器被配置为:将DPB中没有在视频序列当前图像的RPS中出现的所有图像标记为不用于参考。编码器附加地被配置为:将在DPB中的图像中标记为需要输出的0个、1个或多个图像标记为不需要输出,以及从DPB中清空或移除在DPB中的图像中标记为不用于参考且不需要输出的任意图像。编码器还被配置为:解码当前图像,以及确定在DPB中标记为需要输出的图像的数量。编码器附加地被配置为:比较所述数量与从比特流中至少一个已定义的语法元素导出的值;以及如果所述数量大于所述值,将在DPB中标记为需要输出的图像中输出顺序为第一个的图像标记为不需要输出。在实施例中,编码器被配置为:在解码当前图像后,确定图像的数量、比较所述数量、输出所述图像以及标记所述图像。
[0310] 在实施例中,编码器600包括处理器610,处理器610被配置为执行本文先前公开的方法步骤,参见图22。解码器600还可包括与处理器610相连的存储器620,参见图23。
[0311] 图23是根据实施例的编码器600的示意框图。编码器600被配置为将视频序列图像编码到比特流10中。编码器600包括处理器610和存储器620。存储器620包括DPB 625。在实施例中,处理器610被配置为,将DPB 625中没有在视频序列当前图像的RPS中出现的所有图像标记为不用于参考。处理器610还被配置为,将在DPB中的图像中标记为需要输出的0个、1个或多个图像标记为不需要输出。处理器610还被配置为:从DPB 625中清空或移除在DPB 625中的图像中标记为不用于参考且不需要输出的任意图像。在这个实施例中,处理器610还被配置为:解码当前图像,以及确定在DPB 625中标记为需要输出的图像的数量。处理器
610还被配置为,比较所述数量与从比特流中至少一个已定义的语法元素导出的值。处理器
610附加地被配置为:如果所述数量大于所述值,将在DPB 625中标记为需要输出的图像中输出顺序为第一个的图像标记为不需要输出。在这个实施例中,处理器610被配置为:在解码当前图像后,确定图像的数量、比较所述数量、以及标记所述图像。
[0312] 图24是编码器700的另一个实现示例的示意框图。该示例具体适用于编码器600的硬件实现。编码器700包括与包括DPB 725的存储器720相连的数量确定单元730。数量确定单元730被配置为:在视频序列的当前图像已解码且存储在DPB 725中后,确定DPB 725中标记为需要输出的图像的数量。编码器700还包括与数量确定单元730相连并且优选与存储器720相连的比较器740。比较器740被配置为,比较所述数量与所述值sps_max_num_reorder_pics[HighestTid]。编码器的标记单元760与存储器720相连,并被配置为:如果所述数量大于所述值,将在DPB 725中标记为需要输出的图像中输出顺序为第一个的图像标记为不需要输出。
[0313] 比较器740优选与数量确定单元730相连,以接收数量确定单元730确定的图像的数量。
[0314] 图25是编码器800的另一个实现示例的示意框图,该示例适用于编码器800的硬件实现。编码器800包括与包括DPB 825的存储器820相连的标记单元860。标记单元860被配置为:i)将DPB 825中没有在视频序列当前图像的RPS中出现的所有图像标记为不用于参考,以及ii)将在DPB 825中的图像中标记为需要输出的0个、1个或多个图像标记为不需要输出。图像清空单元890与存储器820相连,并被配置为:从DPB 825中清空或移除在DPB 825中的图像中标记为不用于参考且不需要输出的任意图像。编码器800包括解码单元805,解码单元805与存储器820相连并被配置为解码当前图像。编码器800的数量确定单元830与存储器830相连,并被配置为确定在DPB 825中标记为需要输出的图像的数量。编码器800还包括与数量确定单元830相连并且优选与存储器820相连的比较器840。比较器840被配置为,比较所述数量与从比特流中的至少一个已定义的语法元素导出的值。在这个实施例中,标记单元860还被配置为:如果所述数量大于所述值,将在DPB 825中标记为需要输出的图像中输出顺序为第一个的图像标记为不需要输出。在优选实施例中,在解码单元805已解码当前图像后,数量确定单元830被配置为确定所述图像的数量,比较器840被配置为比较所述数量,以及标记单元860被配置为标记所述图像。
[0315] 比较器840优选与数量确定单元830相连,以接收由数量确定单元830确定的图像的数量。
[0316] 如上文所指出的,编码器可以备选地定义为功能模块的组,其中功能模块实现为在处理器上运行的计算机程序。
[0317] 图23是示出包括处理器610和关联存储器620的编码器60的示例的示意框图。
[0318] 因而,驻留在存储器620中的计算机程序可组织为合适的功能模块,这些功能模块被配置为当被处理器610执行时,执行上述步骤和/或任务的至少一部分。图26示出了这些功能模块的示例。因而,图26是示出包括一组功能模块910到930的编码器900的示例的示意框图。这些模块包括:数量确定模块910,用于在表示视频序列图像的比特流的当前图像已解码且存储在DPB中后,确定在DPB中标记为需要输出的图像的数量。编码器900还包括:比较模块920,用于比较所述数量(可选地但是优选地由数量确定模块910确定)与值sps_max_num_reorder_pics[HighestTid]。编码器900还包括:标记模块930,用于如果所述数量大于所述值(可选地但是优选地由比较模块920确定),将在DPB中标记为需要输出的图像中输出顺序为第一个的图像标记为不需要输出。
[0319] 图27是示出了具有一组功能模块1000到1050的编码器1000的另一个示例的示意框图。编码器1000包括标记模块1010,标记模块1010用于将DPB中没有在视频序列的当前图像的RPS中出现的所有图像标记为不用于参考,并将在DPB中的图像中标记为需要输出的0个、1个或多个图像标记为不需要输出。编码器1000还包括:图像清空模块1020,图像清空模块1020用于从DPB中清空或移除在DPB中的图像中标记为不用于参考且不需要输出的任意图像;以及解码模块1030,解码模块1030用于解码当前图像。编码器1000附加地包括:数量确定模块1040,数量确定模块1040用于确定在DPB中标记为需要输出的图像的数量;以及比较模块570,比较模块1050用于比较所述数量(可选地但是优选地由数量确定模块1040确定)与从比特流中的至少一个语法元素导出的值。
[0320] 在实施例中,如果所述数量大于所述值(可选地但是优选地由比较模块1050确定),标记模块1010还用于将在DPB中标记为需要输出的图像中输出顺序为第一个的图像标记为不需要输出。
[0321] 在实施例中,在解码模块1030解码当前图像后,数量确定模块1040确定所述图像的数量、比较模块1050比较所述数量、以及标记模块1050标记所述图像。
[0322] 在实施例中,计算机程序包括程序代码,当所述程序代码被处理器610(参见图23)或计算机执行时,使处理器610或计算机执行以上说明的并在图21或22中示出的步骤、功能、过程和/或框。
[0323] 软件或计算机程序可实现为计算机程序产品,其通常携带于或存储在计算机可读介质上。计算机可读介质可包括一个或多个可移除或不可移除的存储设备,包括但不限于ROM、RAM、CD、DVD、USB、HDD存储设备、闪存、或者任意其他常规存储设备。因而,计算机程序可加载到计算机或等效处理设备的操作存储器中,由其处理电路来执行。
[0324] 图23到27示出的编码器600、700、800、900、1000优选是符合HEVC的解码器。然而应当注意,实施例不限于HEVC。
[0325] 图16到20中任一个之中的解码器100、200、300、400、500以及图23到27任一个之中的编码器600、700、800、900、1000可实现在例如移动终端之中。例如,解码器100、200、300、400、500可位于,例如,视频相机或者用于显示视频流的任意其他设备之中的接收器中。编码器600、700、800、900、1000可位于,例如,移动设备的视频相机中的发射器之中。
[0326] 图28是根据实施例的移动终端1100的示意框图。移动终端1100包括根据实施例的解码器100、200、300、400、500和/或根据实施例的编码器600、700、800、900、1000,例如如图16到20任一项所示的解码器和/或图23到27任一项所示的编码器。
[0327] 移动终端1100优选还包括用于实现与外部单元的通信的输入和输出单元(I/O)1110,所述通信通常是无线通信,但是作为备选或附加,可以是有线通信。I/O单元1110可实现为发射器或接收器,或者用于无线通信的收发器。备选地,I/O单元1110可以是通用I/O单元或者能够执行有线通信的端口1100。如果移动终端1100用编码器600、700、800、900、1000实现,则I/O单元1110优选被配置为发送或输出表示编码视频序列的比特流,如编码器100、
200、300、400、500所生成的。相应地,如果移动终端1100包括解码器100、200、300、400、500,则I/O单元1110优选被配置为接收或输入表示编码视频序列的比特流。
[0328] 移动终端1100包括被配置为存储编码视频序列的编码图像的存储器1120。这些编码图像可以由移动终端1100自身生成。在这种情形中,移动终端1100优选包括与相连编码器600、700、800、900、1000一起的媒体引擎或记录器(未示出)。备选地,编码视频序列由某些其他设备设备生成并发送到移动终端1100。
[0329] 将编码图像从存储器1120带到解码器100、200、300、400、500中。然后,解码器100、200、300、400、500将编码图像解码为解码图像。解码图像提供到媒体播放器1130,媒体播放器1130被配置为:将视频序列的解码图像呈现为在移动终端1100的(或者与移动终端1100相连的)显示器或屏幕1140上可显示的视频数据。
[0330] 图28中,移动终端1100被示为包括解码器100、200、300、400、500和媒体播放器1130,其中解码器100、200、300、400、500被实现为媒体播放器1130的一部分。然而,应当认为,这仅是移动终端1100的实现实施例的说明性而非限制性示例。还可以有分布式的实现,其中解码器100、200、300、400、500和媒体播放器1130可提供在物理上分离的设备之中,并且都在本文使用的移动终端1100的范围之内。显示器1140还可以提供为与进行实际数据处理的移动终端1100相连的单独设备。
[0331] 移动终端1100可以是具有媒体解码功能的任意设备,其对编码图像的编码视频序列进行操作,以解码图像并使视频数据可用。这种移动终端1100的非限制性示例包括移动电话和其他便携式媒体播放器、计算机、解码器、游戏控制台等。
[0332] 实施例的编码器600、700、800、900、1000,如图23到27所示,和/或实施例的解码器100、200、300、400、500,如图16到20所示,可实现为网络节点2,如图29所示。
[0333] 如图29所示,编码器600、700、800、900、1000和/或解码器100、200、300、400、500可实现在位于发送单元3和接收单元4之间的通信网络1中的网络节点2之中。这种网络节点2可以是用于在例如不同视频分辨率帧速率、质量、比特率和编码标准之间转换视频的设备。网络节点2的形式可以是无线基站、节点B或者通信网络1(例如基于无线的网络)中任意其他网络节点。
[0334] 实施例的编码器和/或解码器还可以提供在对比特流进行操作的任意单元(例如媒体感知网络单元)之中。
[0335] 实施例不限于HEVC并可适用于HEVC的任意扩展,例如可缩放扩展或多视图扩展,或者适用于差异视频编解码器。
[0336] 上述实施例将理解为本发明的一些说明性示例。本领域的技术人员将要理解的是,可对实施例做出各种修改、组合和改变,而不脱离本发明的范围。具体来说,在技术上可行时,不同实施例的不同部分方案可用其他配置来组合。然而,本发明的范围由随附权利要求界定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈