首页> 中国专利> 对子图片的帧间预测的限制

对子图片的帧间预测的限制

摘要

描述了用于视频编解码和编码的方法、设备和系统,其包括对子图片的帧间预测的限制。视频处理的一个示例方法包括执行包括包含一个或多个子图片的多个图片的视频和该视频的比特流之间的转换,其中比特流符合格式规则,该格式规则规定在当前图片中的当前子图片具有与在和当前子图片相同位置处的先前图片中的先前子图片的标识符不同的当前标识符的情况下,是否不允许当前子图片参考先前子图片用于帧间预测。

著录项

  • 公开/公告号CN114930837A

    专利类型发明专利

  • 公开/公告日2022-08-19

    原文格式PDF

  • 申请/专利权人 字节跳动有限公司;

    申请/专利号CN202180008179.3

  • 发明设计人 王业奎;张莉;张凯;

    申请日2021-01-04

  • 分类号H04N19/46(2006.01);

  • 代理机构北京市柳沈律师事务所 11105;

  • 代理人张亮

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 16:25:24

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-06

    实质审查的生效 IPC(主分类):H04N19/46 专利申请号:2021800081793 申请日:20210104

    实质审查的生效

说明书

相关申请的交叉引用

根据适用的专利法和/或《巴黎公约》的规定,本申请及时要求2020年1月4日提交的美国临时专利申请No.US 62/957,123的优先权和权益。出于法律的所有目的,通过引用将上述申请的全部公开并入本文,作为本申请公开的一部分。

技术领域

本专利文件涉及图像和视频编解码和解码。

背景技术

在互联网和其他数字通信网络中,数字视频占用了最大的带宽。随着能够接收和显示视频的连接用户设备数的增加,预计数字视频使用的带宽需求将继续增长。

发明内容

本文件公开了可以由视频编码器和解码器为视频编码或解码使用,并且包括对子图片的帧间预测的限制的技术。

在一个示例方面,公开了一种视频处理方法。该方法包括执行包括包含一个或多个子图片的多个图片的视频和该视频的比特流之间的转换,其中比特流符合格式规则,格式规则规定在当前图片中的当前子图片具有与在与当前子图片相同位置处的先前图片中的先前子图片的标识符不同的当前标识符的情况下,是否不允许当前子图片参考先前子图片用于帧间预测。

在另一个示例方面,公开了一种视频处理方法。该方法包括执行包括视频区域的视频和包括多个编解码层的该视频的比特流之间的转换,其中比特流符合格式规则,并且其中格式规则规定基于条件是否允许多个编解码层的不同编解码层中的视频区域之间的层间预测(ILP)。

在又一示例方面,公开了一种视频处理方法。该方法包括执行包括当前视频区域的视频和包括多个编解码层的该视频的比特流之间的转换,其中比特流符合格式规则,并且其中格式规则规定比特流包括是否允许当前视频区域和参考层中的视频区域之间的层间预测(ILP)的指示。

在又一示例方面,公开了一种视频编码器装置。视频编码器包括被配置为实现上述方法的处理器。

在又一示例方面,公开了一种视频解码器装置。视频解码器包括被配置为实现上述方法的处理器。

在又一示例方面,公开了一种其上存储有代码的计算机可读介质。该代码以处理器可执行代码的形式体现了本文描述的方法之一。

贯穿本文件将描述这些以及其他特征。

附图说明

图1示出了用亮度编解码树单元(CTU)分割图片的示例。

图2示出了用亮度CTU分割图片的另一示例。

图3示出了图片的示例分割。

图4示出了图片的另一个示例分割。

图5是其中可以实现所公开的技术的示例视频处理系统的框图。

图6是用于视频处理的示例硬件平台的框图。

图7是示出了根据本公开的一些实施例的视频编解码系统的框图。

图8是示出了根据本公开的一些实施例的编码器的框图。

图9是示出了根据本公开的一些实施例的解码器的框图。

图10-图12示出了用于视频处理的示例方法的流程图。

具体实施方式

在本文件中使用节标题是为了易于理解,而不是将每节中公开的技术和实施例的适用性仅限于该节。此外,在一些描述中使用H.266术语仅仅是为了易于理解,而不是为了限制所公开技术的范围。因此,本文描述的技术也适用于其他视频编解码器协议和设计。

1.初始讨论

本文件与视频编解码技术有关。具体地,它是关于子图片、片和条带的信令通知。这些思想可以单独或在多种组合中应用于支持多层视频编解码的任何视频编解码标准或非标准视频编解码器,例如正在开发的多功能视频编解码(VVC)。

2.缩写

APS 自适应参数集

AU 接入单元

AUD 接入单元定界符

AVC 高级视频编解码

CLVS 编解码层视频序列

CPB 编解码图片缓冲区

CRA 干净随机接入(Clean Random Access)

CTU 编解码树单元

CVS 编解码视频序列

DPB 解码图片缓冲区

DPS 解码参数集

EOB 比特流的末尾

EOS 序列的末尾

GDR 渐进解码刷新

HEVC 高效视频编解码

HRD 假定参考解码器

IDR 瞬时解码刷新

JEM 联合探索模型

MCTS 运动约束片集

NAL 网络抽象层

OLS 输出图层集

PH 图片标头

PPS 图片参数集

PTL 配置文件、层次和级别

PU 图片单元

RBSP 原始字节序列有效载荷

SEI 补充增强信息

SPS 序列参数集

SVC 可伸缩视频编解码

VCL 视频编解码层

VPS 视频参数集

VTM VVC测试模型

VUI 视频可用性信息

VVC 多功能视频编解码

3.视频编解码简介

视频编解码标准主要是通过开发众所周知的ITU-T和ISO/IEC标准而发展起来的。ITU-T制作了H.261和H.263,ISO/IEC制作了MPEG-1和MPEG-4视觉,并且这两个组织共同制作了H.262/MPEG-2视频和H.264/MPEG-4高级视频编解码(AVC)和H.265/HEVC标准。自H.262以来,视频编解码标准基于混合视频编解码结构,其中利用了时域预测加变换编解码。为探索HEVC之外的未来视频编解码技术,VCEG和MPEG于2015年共同成立了联合视频探索团队(JVET)。从那时起,JVET采用了许多新的方法,并将其应用到了名为联合探索模型(JEM)的参考软件中。同时JVET会议每季度举办一次,并且新的编解码标准的目标是与HEVC相比降低50%的比特率。新的视频编解码标准在2018年4月的JVET会议上被正式命名为多功能视频编解码(VVC),并且第一版VVC测试模型(VTM)也在当时发布。由于对VVC标准化贡献持续努力,新的编解码技术在每次JVET会议上都被采用到VVC标准中。然后,VVC的工作草案和测试模型VTM在每次会议后都会更新。VVC项目现在目标是在2020年7月的会议上技术上完成(FDIS)。

3.1.HEVC中的图片分割方案

HEVC包括四种不同的图片分割方案,即常规条带、依赖条带(dependent slice)、片和波前并行处理(WPP),其可以被应用于最大传输单元(MTU)尺寸匹配、并行处理和减少的端到端延迟。

常规条带与H.264/AVC中的相似。每个常规条带被封装在其自己的NAL单元中,并且跨条带边界的图片中预测(帧内样点预测、运动信息预测、编解码模式预测)和熵编解码依赖性被禁用。因此,可以独立于相同图片内的其他常规条带来重建常规条带(尽管由于环路滤波操作可能仍然存在相互依赖性)。

常规条带是唯一可以被用于并行化的工具,在H.264/AVC中也以几乎相同的形式可用。基于常规条带的并行化不需要太多的处理器间或内核间通信(除了在解码预测的编解码图片时用于运动补偿的处理器间或内核间数据共享,由于图片内预测,其通常比处理器间或内核间数据共享繁重得多)。然而,出于同样的原因,由于条带标头的比特成本以及缺乏跨条带边界的预测,常规条带的使用会带来大量编解码开销。此外,由于常规条带的图片内独立性以及每个常规条带被封装在它自己的NAL单元中,常规条带(与下面提到的其他工具相比)还用作比特流分割的关键机制,以匹配MTU尺寸要求。在许多情况下,并行化的目标和MTU尺寸匹配的目标对图片中的条带布局提出了矛盾的要求。对这种情况的认识导致了下面提到的并行化工具的开发。

依赖条带具有短的条带标头,并且允许在树块边界分割比特流,而不破坏任何图片内预测。基本上,依赖条带将常规条带的分片(fragmentation)提供到多个NAL单元中,以通过允许常规条带的一部分在整个常规条带的编码完成之前被发送出去来提供减少的端到端延迟。

在WPP中,图片被分割成单行编解码树块(CTB)。熵解码和预测被允许使用来自其他分割中CTB的数据。通过CTB行的并行解码,并行处理是可能的,其中CTB行的解码的开始被延迟了两个CTB,如此来确保在主题CTB被解码之前,与主题CTB上方和右侧的CTB有关的数据是可用的。使用这种交错的开始(当以图形表示时,其看起来像一个波前),最多可以使用与图片包含CTB行一样多的处理器/内核进行并行化。因为在图片内相邻树块行之间的图片内预测是准许的,所以使能图片内预测所需的处理器间/内核间通信可能是大量的。与未应用时相比,WPP分割不会导致额外的NAL单元的产生,因此WPP不是用于MTU尺寸匹配的工具。但是,如果需要MTU尺寸匹配,在有一定程度上的编解码开销的情况下,常规条带可以与WPP一起使用。

片定义了将图片分割为片列和行的水平和垂直边界。片列从图片的顶部延伸到图片的底部。同样,片行从图片的左侧延伸到图片的右侧。图片中的片数可以简单地通过片列数乘以片行数来导出。

在以图片的片光栅扫描的顺序解码下一个片的左上CTB之前,CTB的扫描顺序被改变为在片内是局部的(以片的CTB光栅扫描的顺序)。与常规条带类似,片打破了图片内预测依赖性以及熵解码依赖性。然而,它们不需要被包括在单独的NAL单元中(在这方面与WPP相同);因此,片不能用于MTU尺寸匹配。每个片可以由一个处理器/内核来处理,并且解码相邻片的处理单元之间的图片内预测所需的处理器间/内核间通信限于在条带跨越不止一个片的情况下传送共享条带标头,以及与重建样点和元数据的共享相关的环路滤波。当条带中包括多于一个的片或WPP段时,条带中除第一个之外的每个片或WPP段的入口点字节偏移在条带标头中信令通知。

为简单起见,在HEVC已经规定了对四种不同图片分割方案的应用的限制。给定的编解码视频序列不能包括HEVC中规定的大部分配置文件的片和波前二者。对于每个条带和片,必须满足以下条件中的一个或两个:1)条带中的所有编解码树块属于相同片;2)片中的所有编码的树块属于相同条带。最后,一个波前段正好包含一个CTB行,并且当使用WPP时,如果条带从CTB行内开始,它必须在相同CTB行结束。

在2017年10月24日公开发布的JCT-VC输出文件JCTVC-AC1005、J.Boyce、A.Ramasubramonian、R.Skupin、G.J.Sullivan、A.Tourapis、Y.-K.Wang(编辑),“HEVC附加补充增强信息(草案4)”中规定了对HEVC的最新修订:http:

//phenix.int-evry.fr/jct/doc_end_user/documents/29_Macau/wg11/JCTVC-AC1005-v2.zip。通过包括这一修订,HEVC规定了三种与MCTS相关的SEI消息,即时域MCTSSEI消息、MCTS提取信息集SEI消息和MCTS提取信息嵌套SEI消息。

时域MCTS SEI消息指示比特流中MCTS的存在,并且信令通知MCTS。对于每个MCTS,运动矢量被限制为指向MCTS内部的全采样位置和仅需要MCTS内部的全采样位置用于插值的分数采样位置,并且不允许从MCTS外部的块导出的用于时域运动矢量预测的运动矢量候选的使用。这样,每个MCTS可以被独立解码,而不存在不包括在MCTS中的片。

MCTS提取信息集SEI消息提供了可以在MCTS子比特流提取中使用的补充信息(被规定为SEI消息的语义的一部分),以为MCTS集生成符合比特流。该信息由多个提取信息集组成,每个定义了多个MCTS集并包含将在MCTS子比特流提取过程期间使用的替换VPS、SPS和PPS的RBSP字节。当根据MCTS子比特流提取过程提取子比特流时,参数集(VPS、SPS和PPS)需要被重写或替换,片标头需要稍微更新,因为一个或所有片地址相关的语法元素(包括first_slice_segment_in_pic_flag和slice_segment_address)通常需要具有不同的值。

3.2.VVC的图片分割

在VVC中,图片被分成一个或多个片行和一个或多个片列。片是覆盖图片的矩形区域的CTU序列。片中的CTU在该片内以光栅扫描顺序被扫描。

条带由整数个完整的片或图片的片内整数个连续的完整CTU行组成。

支持两种条带模式,即光栅扫描条带模式和矩形条带模式。在光栅扫描条带模式中,条带包含图片的片光栅扫描中的完整片序列。在矩形条带模式中,条带包含共同形成图片的矩形区域的多个完整片,或者共同形成图片的矩形区域的一个片的多个连续的完整CTU行。矩形条带内的片在对应于该条带的矩形区域内以片光栅扫描顺序被扫描。

子图片包含共同覆盖图片的矩形区域的一个或多个条带。

图1示出了图片的光栅扫描条带分割的示例,其中图片被分成12个片和3个光栅扫描条带。

图2示出了图片的矩形条带分割的示例,其中图片被分成24个片(6个片列和4个片行)和9个矩形条带。

图3示出了被分割成片和矩形条带的图片的示例,其中图片被分成4个片(2个片列和2个片行)和4个矩形条带。

图4示出了图片的子图片分割的示例,其中图片被分割成18个片,左手边的12个的每个覆盖一个4×4 CTU的条带,并且右手边的6个片的每个覆盖2个2×2 CTU的垂直堆叠条带,总共产生不同维度的24个条带和24个子图片(每个条带是一个子图片)。

3.3.VVC中子图片、片和条带的信令通知

在最新的VVC草案文本中,子图片的信息包括子图片布局(即每个图片的子图片数以及每个图片的位置和尺寸)和其他序列级别子图片信息,其在SPS中信令通知。SPS中信令通知的子图片的顺序定义了子图片索引。例如,在SPS或PPS中,可以显式地信令通知子图片ID列表(每个子图片一个ID)。

VVC中的片在概念上与HEVC中的相同,即,每个图片被分割成片列和片行,但是在PPS中具有不同的语法用于片的信令通知。

在VVC中,条带模式也在PPS中信令通知。当条带模式为矩形条带模式时,PPS中会信令通知每个图片的条带布局(即每个图片的条带数以及每个条带的位置和尺寸)。PPS中信令通知的图片内矩形条带的顺序定义了图片级别条带索引。子图片级别条带索引被定义为子图片内的条带以其图片级别条带索引的升序的顺序。基于SPS中信令通知的子图片位置和尺寸(当每个子图片仅包含一个条带时),或者基于PPS中信令通知的片位置和尺寸(当一个子图片可能包含不止一个条带时),信令通知/导出矩形条带的位置和尺寸。当条带模式是光栅扫描条带模式时,类似于在HEVC中,在具有不同的细节的情况下,图片内条带的布局在条带本身中信令通知。

与本文的发明最相关的最新VVC草案文本中的SPS、PPS和条带标头语法和语义如下。

7.3.2.3序列参数集RBSP语法

7.4.3.3序列参数集RBSP语义

...

subpics_present_flag等于1规定SPS RBSP语法中存在子图片参数。

subpics_present_flag等于0规定SPS RBSP语法中不存在子图片参数。

注释2–当比特流是子比特流提取过程的结果,并且仅包含到子比特流提取过程的输入比特流的子图片的子集时,可能需要在SPS的RBSP中将subpics_present_flag的值设置为1。

sps_num_subpics_minus1加1规定子图片数。sps_num_subpics_minus1应在0到254的范围内。当不存在时,推断sps_num_subpics_minus1的值等于0。

subpic_ctu_top_left_x[i]规定第i个子图片以CtbSizeY为单位的左上角CTU的水平位置。语法元素的长度为Ceil Ceil(Log2(pic_width_max_in_luma_samples/CtbSizeY))比特。当不存在时,推断subpic_ctu_top_left_x[i]的值等于0。

subpic_ctu_top_left_y[i]规定第i个子图片以CtbSizeY为单位的左上角CTU的垂直位置。语法元素的长度为Ceil(Log2(pic_height_max_in_luma_samples/CtbSizeY))比特。当不存在时,推断subpic_ctu_top_left_y[i]的值等于0。

subpic_width_minus1[i]加1规定第i个子图片以CtbSizeY为单位的宽度。

语法元素的长度为Ceil(Log2(pic_width_max_in_luma_samples/CtbSizeY))比特。当不存在时,推断subpic_width_minus1[i]的值等于Ceil(pic_width_max_in_luma_samples/CtbSizeY)-1。

subpic_height_minus1[i]加1规定第i个子图片以CtbSizeY为单位的高度。

语法元素的长度为Ceil(Log2(pic_height_max_in_luma_samples/CtbSizeY))比特。当不存在时,推断subpic_height_minus1[i]的值等于Ceil(pic_height_max_in_luma_samples/CtbSizeY)-1。

subpic_treated_as_pic_flag[i]等于1规定CLVS中每个编解码图片的第i个子图片在不包括环路内滤波操作的解码过程中被视为图片。

subpic_treated_as_pic_flag[i]等于0规定CLVS中每个编解码图片的第i个子图片在不包括环路内滤波操作的解码过程中不被视为图片。当不存在时,推断subpic_treated_as_pic_flag[i]的值等于0。

loop_filter_across_subpic_enabled_flag[i]等于1规定可以跨CLVS中的每个编解码图片中的第i个子图片的边界执行环路内滤波操作。

loop_filter_across_subpic_enabled_flag[i]等于0规定不跨CLVS中的每个编解码图片中的第i个子图片的边界执行环路内滤波操作。当不存在时,推断

loop_filter_across_subpic_enabled_pic_flag[i]的值等于1。

比特流一致性的要求是应用以下约束:

-对于任意两个子图片subpicA和subpicB,当subpicA的子图片索引小于subpicB的子图片索引时,subPicA的任何编解码条带NAL单元在解码顺序上都应当在subPicB的任何编解码条带NAL单元之前。

-子图片的形状应当使得每个子图片在被解码时应当使其整个左边界和整个上边界由图片边界组成,或者由先前解码的子图片的边界组成。

sps_subpic_id_present_flag等于1规定SPS中存在子图片ID映射。

sps_subpic_id_present_flag等于0规定SPS中不存在子图片ID映射。

sps_subpic_id_signalling_present_flag等于1规定在SPS中信令通知子图片ID映射。sps_subpic_id_signalling_present_flag等于0规定SPS中不信令通知子图片ID映射。当不存在时,推断sps_subpic_id_signalling_present_flag的值等于0。

sps_subpic_id_len_minus1加1规定用于表示语法元素sps_subpic_id[i]的比特数。sps_subpic_id_len_minus1的值应当在0到15的范围内(包含端点)。

sps_subpic_id[i]规定第i个子图片子图片ID。sps_subpic_id[i]语法元素的长度为sps_subpic_id_len_minus1+1比特。当不存在时,并且当sps_subpic_id_present_flag等于0时,对于0到sps_num_subpics_minus1(包含端点)范围内的每个i,推断sps_subpic_id[i]的值等于i

...

7.3.2.4图片参数集RBSP语法

7.4.3.4图片参数集RBSP语义

...

pps_subpic_id_signalling_present_flag等于1规定在PPS中信令通知子图片ID映射。pps_subpic_id_signalling_present_flag等于0规定PPS中不信令通知子图片ID映射。当sps_subpic_id_present_flag为0或sps_subpic_id_signalling_present_flag等于1时,pps_subpic_id_signalling_present_flag应当等于0。

pps_num_subpics_minus1加1规定参考PPS的编解码图片中子图片数。比特流一致性的要求是pps_num_subpic_minus1的值应当等于sps_num_subpics_minus1。

pps_subpic_id_len_minus1加1规定用于表示语法元素pps_subpic_id[i]的比特数。pps_subpic_id_len_minus1的值应当在0到15的范围内(包含端点)。比特流一致性的要求是pps_subpic_id_len_minus1的值对于CLVS中编解码图片所参考的所有PPS应当是相同的。

pps_subpic_id[i]规定第i个子图片的子图片ID。pps_subpic_id[i]语法元素的长度为pps_subpic_id_len_minus1+1比特。

no_pic_partition_flag等于1规定没有图片分割应用于参考PPS的每个图片。

no_pic_partition_flag等于0规定参考PPS的每个图片可以被分割成一个以上的片或条带。

比特流一致性的要求是no_pic_partition_flag的值对于CLVS内编解码图片所参考的所有PPS应当是相同的。

比特流一致性的要求是,当sps_num_subpics_minus1+1的值大于1时,no_pic_partition_flag的值不应当等于1。

pps_log2_ctu_size_minus5加5规定每个CTU的亮度编解码树块尺寸。

pps_log2_ctu_size_minus5应当等于sps_log2_ctu_size_minus5。

num_exp_tile_columns_minus1加1规定显式提供的片列宽的数量。

num_exp_tile_columns_minus1的值应当在0到PicWidthInCtbsY-1的范围内(包含端点)。当no_pic_partition_flag等于1时,推断num_exp_tile_columns_minus1的值等于0。

num_exp_tile_rows_minus1加1规定显式提供的片行高的数量。

num_exp_tile_rows_minus1的值应当在0到PicHeightInCtbsY-1的范围内(包含端点)。当no_pic_partition_flag等于1时,推断num_tile_rows_minus1的值等于0。

tile_column_width_minus1[i]加1规定对于在0到num_exp_tile_columns_minus1-1的范围内(包含端点)的i,第i个片列以CTB为单位的宽度。tile_column_width_minus1[num_exp_tile_columns_minus1]用于导出索引大于或等于num_exp_tile_columns_minus1的片列的宽度(如第6.5.1节中所规定的)。当不存在时,推断tile_column_width_minus1[0]的值等于PicWidthInCtbsY-1。

tile_row_height_minus1[i]加1规定对于在0到num_exp_tile_rows_minus1-1的范围内(包含端点)的i,第i个片行以CTB为单位的高度。tile_row_height_minus1[num_exp_tile_rows_minus1]用于导出索引大于或等于num_exp_tile_rows_minus1的片行的高度(如第6.5.1节中所规定的)。当不存在时,推断tile_row_height_minus1[0]的值等于PicHeightInCtbsY-1。

rect_slice_flag等于0规定每个条带内的片以光栅扫描顺序,并且PPS中不信令通知条带信息。rect_slice_flag等于1规定每个条带内的片覆盖图片的矩形区域,并且PPS中信令通知条带信息。当不存在时,推断rect_slice_flag等于1。当subpics_present_flag等于1时,rect_slice_flag的值应当等于1。

single_slice_per_subpic_flag等于1规定每个子图片由一个且仅一个矩形条带组成。single_slice_per_subpic_flag等于0规定每个子图片可以由一个或多个矩形条带组成。当subpics_present_flag等于0时,single_slice_per_subpic_flag应当等于0。当single_slice_per_subpic_flag等于1时,推断num_slices_in_pic_minus1等于sps_num_subpics_minus1。

num_slices_in_pic_minus1加1规定参考PPS的每个图片中矩形条带数。

num_slices_in_pic_minus1的值应当在0到MaxSlicesPerPicture-1的范围内(包含端点),其中在附录A中规定MaxSlicesPerPicture。当no_pic_partition_flag等于1时,推断num_slices_in_pic_minus1的值等于0。

tile_idx_delta_present_flag等于0规定tile_idx_delta值不存在于PPS中,并且参考PPS的图片中的所有矩形条带都根据第6.5.1节中定义的过程以光栅顺序规定。tile_idx_delta_present_flag等于1规定tile_idx_delta值可以存在于PPS中,并且参考PPS的图片中的所有矩形条带以tile_idx_delta的值所指示的顺序来规定。

slice_width_in_tiles_minus1[i]加1规定第i个矩形条带以片列为单位的宽度。

slice_width_in_tiles_minus1[i]的值应当在0到NumTileColumns-1的范围内(包含端点)。当不存在时,推断slice_width_in_tiles_minus1[i]的值为第6.5.1节中所规定的值。

slice_height_in_tiles_minus1[i]加1规定第i个矩形条带以片行为单位的高度。

slice_height_in_tiles_minus1[i]的值应当在0到NumTileRows-1的范围内(包含端点)。当不存在时,推断slice_height_in_tiles_minus1[i]的值为第6.5.1节中所规定的值。

num_slices_in_tile_minus1[i]加1规定当前片中的条带数,用于第i个条带包含来自单个片的CTU行的子集的情况。num_slices_in_tile_minus1[i]的值应当在0至RowHeight[tileY]-1的范围内(包含端点),其中tileY是包含第i个条带的片行索引。当不存在时,推断num_slices_in_tile_minus1[i]的值等于0。

slice_height_in_ctu_minus1[i]加1规定第i个矩形条带以CTU行为单位的高度,用于第i个条带包含来自单个片的CTU行的子集的情况。

slice_height_in_ctu_minus1[i]的值应当在0至RowHeight[tileY]-1的范围内(包含端点),其中tileY是包含第i个条带的片行索引。

tile_idx_delta[i]规定第i个矩形条带和第(i+1)个矩形条带之间的片索引差。

tile_idx_delta[i]的值应当在–NumTilesInPic+1至NumTilesInPic-1的范围内(包含端点)。当不存在时,推断tile_idx_delta[i]的值等于0。在所有其他情况下,tile_idx_delta[i]的值不应当等于0。

loop_filter_across_tiles_enabled_flag等于1规定可以跨参考PPS的图片中的片边界执行环路内滤波操作。loop_filter_across_tiles_enabled_flag等于0规定不跨参考PPS的图片中的片边界执行环路内滤波操作。环路内滤波操作包括去方块滤波器、样点自适应偏移滤波器和自适应环路滤波器操作。当不存在时,推断loop_filter_across_tiles_enabled_flag的值等于1。

loop_filter_across_slices_enabled_flag等于1规定可以跨参考PPS的图片中的条带边界执行环路内滤波操作。loop_filter_across_slice_enabled_flag等于0规定不跨参考PPS的图片中的条带边界执行环路内滤波操作。环路内滤波操作包括去方块滤波器、样点自适应偏移滤波器和自适应环路滤波器操作。当不存在时,推断loop_filter_across_slices_enabled_flag的值等于0。

...

7.3.7.1通用条带标头语法

7.4.8.1通用条带标头语义

...

slice_subpic_id规定包含条带的子图片的子图片标识符。如果slice_subpic_id存在,则导出使得SubpicIdList[SubPicIdx]等于slice_subpic_id的变量SubPicIdx的值。否则(slice_subpic_id不存在),导出等于0的变量SubPicIdx。

由下式导出以比特为单位的slice_subpic_id的长度:

-如果sps_subpic_id_signalling_present_flag等于1,则slice_subpic_id的长度等于sps_subpic_id_len_minus1+1。

-否则,如果ph_subpic_id_signalling_present_flag等于1,则slice_subpic_id的长度等于ph_subpic_id_len_minus1+1。

-否则,如果pps_subpic_id_signalling_present_flag等于1,则slice_subpic_id的长度等于pps_subpic_id_len_minus1+1。

-否则,slice_subpic_id的长度等于Ceil(Log2(sps_num_subpics_minus1+1))。

slice_address规定条带的条带地址。当不存在时,推断slice_address的值等于0。

如果rect_slice_flag等于0,适用如下:

-条带地址是光栅扫描条带索引。

-slice_address的长度为Ceil(Log2(NumTilesInPic))比特。

-slice_address的值应当在0到NumTilesInPic-1的范围内(包含端点)。

否则(rect_slice_flag等于1),适用如下:

-条带地址是第SubPicIdx个子图片内的条带的条带索引。

-slice_address的长度为Ceil(Log2(NumSlicesInSubpic[SubPicIdx]))比特。

-slice_address的值应当在0至NumSlicesInSubpic[SubPicIdx]-1的范围内(包含端点)。

比特流一致性的要求是应用以下约束:

-如果rect_slice_flag等于0或subpics_present_flag等于0,则slice_address的值不应当等于相同编解码图片的任何其他编解码条带NAL单元的slice_address的值。

-否则,slice_subpic_id和slice_address值的对将不等于相同编解码图片的任何其他编解码条带NAL单元的slice_subpic_id和slice_address值的对。

-当rect_slice_flag等于0时,图片的条带将按照它们的slice_address值的升序排列。

-图片的条带的形状应当是使得每个CTU在被解码时应当使其整个左边界和整个上边界由图片边界或由先前解码的(多个)CTU的边界组成。

num_tiles_in_slice_minus1加1,当存在时规定条带中的片数。

num_tiles_in_slice_minus1的值应当在0到NumTilesInPic-1的范围内(包含端点)。

规定当前条带中CTU数的变量NumCtuInCurrSlice,以及对于在0到NumCtuInCurrSlice-1范围内(包含端点)的i,规定条带内第i个CTB的图片光栅扫描地址的列表CtbAddrInCurrSlice[i],推导如下:

变量SubPicLeftBoundaryPos、SubPicTopBoundaryPos、SubPicRightBoundaryPos和SubPicBotBoundaryPos的推导如下:

4.通过本文的技术方案所解决的技术问题的示例

在VVC中,用于信令通知子图片、片和条带的现有设计具有以下问题:

1)sps_num_subpics_minus1的编解码是u(8),其不允许每图片有超过256个子图片。然而,在某些应用中,每图片的子图片的最大数量可能需要大于256。

2)允许subpics_present_flag等于0且sps_subpic_id_present_flag等于1。

然而,其没有意义,因为subpics_present_flag等于0意味着CLVS根本没有关于子图片的信息。

3)可以在图片标头(PH)中信令通知子图片ID的列表,每个子图片一个。然而,当在PH中信令通知子图片ID的列表时,并且当从比特流中提取子图片的子集时,所有的PH都需要改变。这是不可取的。

4)目前,当通过等于1的sps_subpic_id_present_flag(或者语法元素的名称被改变为subpic_ids_explicitly_signalled_flag)来指示子图片ID将被显式地信令通知时,可能在任何地方都不信令通知子图片ID。这是有问题的,因为当子图片ID被指示将被显式地信令通知时,需要在SPS或PPS中显式地信令通知子图片ID。

5)当没有显式信令通知子图片ID时,只要subpics_present_flag等于1(包括当sps_num_subpics_minus1等于0)时,仍然需要信令通知条带标头语法元素slice_subpic_id。然而,当前规定slice_subpic_id的长度为Ceil(Log2(sps_num_subpics_minus1+1))比特,其可以在sps_num_subpics_minus1等于0时为0比特。这是有问题的,因为任何现有语法元素的长度都不能是0比特。

6)包括子图片数及其尺寸和位置的子图片布局,对于整个CLVS保持不变。即使当在SPS或PPS中没有显式信令通知子图片ID时,对于条带标头中的子图片ID语法元素,仍然需要信令通知子图片ID长度。

7)每当rect_slice_flag等于1时,语法元素slice_address在条带标头中被信令通知,并且规定包含该条带的子图片内的条带索引(包括在子图片内的条带数(即NumSlicesInSubpic[SubPicIdx])等于1时)。然而,当前,当rect_slice_flag等于1时,规定slice_address的长度为Ceil(Log2(NumSlicesInSubpic[SubPicIdx]))比特,其在NumSlicesInSubpic[SubPicIdx]等于1时为0比特。这是有问题的,因为任何现有语法元素的长度都不能是0比特。

8)语法元素no_pic_partition_flag和pps_num_subpics_minus1之间存在冗余,尽管最新的VVC文本具有以下约束:当sps_num_subpics_minus1大于0时,no_pic_partition_flag的值应当等于1。

9)在CLVS内,对于特定子图片位置或索引的子图片ID值可能随图片而变化。当其发生时,原则上,子图片不能通过参考相同层中的参考图片来使用帧间预测。然而,目前,在当前的VVC规范中缺乏禁止这种情况的约束。

10)在当前的VVC设计中,参考图片可以是不同层中的图片,以支持多种应用,例如,可伸缩视频编解码和多视图视频编解码。如果子图片存在于不同的层中,则需要研究是否允许或不允许层间预测。

5.示例技术和实施例

为了解决上述问题和其他问题,公开了如下总结的方法。本发明应当被认为是解释一般概念的示例,而不应当以狭隘的方式解释。此外,这些发明可以单独应用或以任何方式组合应用。

1)为了解决第一个问题,将sps_num_subpics_minus1的编解码从u(8)改变为ue(v),以使能每个图片有多于256个子图片。

a.此外,sps_num_subpics_minus1的值限制在0至

Ceil(pic_width_max_in_luma_samples÷CtbSizeY)*

Ceil(pic_height_max_in_luma_samples÷CtbSizeY)-1的范围内(包含端点)。

b.此外,每图片的子图片的数量在级别的定义中受到进一步的限制。

2)为了解决第二个问题,将语法元素sps_subpic_id_present_flag的信令通知的条件设为“if(subpics_present_flag)”,即,当subpics_present_flag等于0时,不信令通知语法元素sps_subpic_id_present_flag,并且当它不存在时,推断sps_subpic_id_present_flag的值等于0。

a.替代地,当subpics_present_flag等于0时,仍然信令通知语法元素sps_subpic_id_present_flag,但是当subpics_present_flag等于0时,则该值需要等于0。

b.此外,语法元素subpics_present_flag和sps_subpic_id_present_flag的名称分别被改变为subpic_info_present_flag和subpic_ids_explicitly_signalled_flag。

3)为了解决第三个问题,删除了PH语法中子图片ID的信令通知。因此,对于在0到sps_num_subpics_minus1范围内(包含端点)的i,列表SubpicIdList[i]推导如下:

4)为了解决第四个问题,当子图片被指示为被显式地信令通知时,子图片ID在SPS或PPS中被信令通知。

a.这是通过添加以下约束来实现的:如果subpic_ids_explicitly_signalled_flag为0或者subpic_ids_in_sps_flag等于1,则subpic_ids_in_pps_flag应当等于0。否则(subpic_ids_explicitly_signalled_flag为1且subpic_ids_in_sps_flag等于0),subpic_ids_in_pps_flag应当等于1。

5)为了解决第五和第六个问题,不管SPS标志sps_subpic_id_present_flag(或重命名为subpic_ids_explicitly_signalled_flag)的值如何,都在SPS中信令通知子图片ID的长度,尽管当在PPS中显式地信令通知子图片ID时,也可以在PPS中信令通知长度,以避免解析PPS对SPS的依赖性。在这种情况下,长度还规定了条带标头中子图片ID的长度,即使子图片ID没有在SPS或PPS中显式地信令通知。因此,当存在时,slice_subpic_id的长度也由在SPS中信令通知的子图片ID长度来规定。

6)替代地,为了解决第五和第六个问题,向SPS语法添加标志,其值为1,用于规定SPS语法中子图片ID长度的存在。该标志的存在不依赖于指示在SPS或PPS中是否显式信令通知子图片ID的标志的值。当subpic_ids_explicitly_signalled_flag等于0时,该标志的值可以等于1或0,但是当subpic_ids_explicitly_signalled_flag等于1时,该标志的值必须等于1。当该标志等于0时(即子图片长度不存在时),规定slice_subpic_id的长度为Max(Ceil(Log2(sps_num_subpics_minus1+1)),1)比特(与最新的VVC草案文本中的Ceil(Log2(sps_num_subpics_minus1+1))比特相反)。

a.替代地,该标志仅在subpic_ids_explicitly_signalled_flag等于0时存在,并且当subpic_ids_explicitly_signalled_flag等于1时,推断该标志的值等于1。

7)为了解决第七个问题,当rect_slice_flag等于1时,规定slice_address的长度为Max(Ceil(Log2(NumSlicesInSubpic[SubPicIdx])),1)比特。

a.替代地,此外,当rect_slice_flag等于0时,规定slice_address的长度为Max(Ceil(Log2(NumTilesInPic)),1)比特,与Ceil(Log2(NumTilesInPic))比特相反。

8)为了解决第八个问题,将no_pic_partition_flag的信令通知的条件设为“if(subpic_ids_in_pps_flag&&pps_num_subpics_minus1>0)”,并添加以下推断:当不存在时,推断no_pic_partition_flag的值等于1。

a.替代地,将子图片ID语法(所有四个语法元素)移动到在PPS中的片和条带语法之后,例如,紧接在语法元素entropy_coding_sync_enabled_flag之前,并且然后将pps_num_subpics_minus1的信令通知的条件设为“if(no_pic_partition_flag)”。

9)为了解决第九个问题,规定了以下约束:对于每个特定的子图片索引(或者等效地,子图片位置),当子图片ID值在图片picA处相较于在picA相同层中的解码顺序中的先前图片的子图片ID值发生变化时,除非picA是CLVS的第一个图片,否则在picA处的子图片应仅包含具有nal_unit_type等于IDR_W_RADL、IDR_N_LP或CRA_NUT的编解码条带NAL单元。

a.替代地,上述约束仅适用于subpic_treated_as_pic_flag[i]的值等于1的子图片索引。

b.替代地,对于第9项和第9a项,将“IDR_W_RADL、IDR_N_LP或CRA_NUT”更改为“IDR_W_RADL、IDR_N_LP、CRA_NUT、RSV_IRAP_11或RSV_IRAP_12”。

c.替代地,在picA处的子图片可以包含其他类型的编解码条带NAL单元,然而,这些编解码条带NAL单元仅使用帧内预测、帧内块复制(IBC)预测和调色板模式预测中的一个或多个。

d.替代地,picA的子图片中的第一视频单元(诸如条带、片、块等)可以参考先前图片中的第二视频单元。约束了尽管第二视频单元和第一视频单元的子图片ID可能不同,但二者可以在具有相同子图片索引的子图片中。子图片索引是分配给子图片的唯一编号,其在CLVS中不能改变。

10)对于特定的子图片索引(或等效地,子图片位置),可以在比特流中信令通知由层ID值连同子图片索引或子图片ID值一起标识的哪些子图片被允许用作参考图片的指示。

11)对于多层情况,当满足某些条件(例如,可能取决于子图片的数量、子图片的位置)时,允许根据来自不同层中的子图片的层间预测(ILR),而当不满足某些条件时,禁用ILR。

a.在一个示例中,即使当两层中的两个子图片具有相同的子图片索引值但是不同的子图片ID值时,当满足某些条件时,层间预测仍然可以被允许。

i.在一个示例中,某些条件是“如果两个层与不同的视图顺序索引/视图顺序ID值相关联”。

b.如果第一层中的第一子图片和第二层中的第二子图片具有相同的子图片索引,则可以约束这两个子图片必须处于同位的位置(co-locatedpositions)和/或合理的宽度/高度。

c.如果第一子图片可以参考第二参考子图片,则可以约束第一层中的第一子图片和第二层中的第二子图片必须在同位的位置和/或合理的宽度/高度。

12)在比特流中(诸如在VPS/DPS/SPS/PPS/APS/序列标头/图片标头中),信令通知当前子图片是否可以使用来自与参考层的区域或子图片相关联的样点值和/或其他值(例如,运动信息和/或编解码模式信息)的层间预测(ILP)。

a.在一个示例中,参考层的参考区域或子图片是那些包含当前子图片内样点的至少一个同位样点的参考区域或子图片。

b.在一个示例中,参考层的参考区域或子图片在当前子图片的同位区域之外。

c.在一个示例中,这种指示在一个或多个SEI消息中被信令通知。

d.在一个示例中,不管参考层是否具有多个子图片,以及当多个子图片存在于一个或多个参考层中时,不管将图片到子图片的分割是否与当前图片对齐以使得当前图片中的每个子图片有覆盖同位区域的参考图片中对应子图片,以及此外不管对应/同位子图片是否具有与当前子图片相同的子图片ID值,都信令通知这样的指示。

6.实施例

以下是除了上文第5节中总结的第8项之外的所有发明方面的一些示例实施例,其可应用于VVC规范。变更后的文本基于JVET-P2001-v14中的最新VVC文本。已添加或修改的最相关的部分以

6.1.第一实施例

7.3.2.3序列参数集RBSP语法

7.4.3.3序列参数集RBSP语义

...

注意2–当比特流是子比特流提取过程的结果,并且仅包含子比特流提取过程的输入比特流的子图片的子集时,可能需要在SPS中设置

sps_num_subpics_minus1加1规定子图片的数量。

subpic_ctu_top_left_x[i]规定第i个子图片以CtbSizeY为单位的左上角CTU的水平位置。语法元素的长度为Ceil(Log2(pic_width_max_in_luma_samples/CtbSizeY))比特。当不存在时,推断subpic_ctu_top_left_x[i]的值等于0。

subpic_ctu_top_left_y[i]规定第i个子图片以CtbSizeY为单位的左上角CTU的垂直位置。语法元素的长度为Ceil(Log2(pic_height_max_in_luma_samples/CtbSizeY))比特。当不存在时,推断subpic_ctu_top_left_y[i]的值等于0。

subpic_width_minus1[i]加1规定第i个子图片以CtbSizeY为单位的宽度。语法元素的长度为Ceil(Log2(pic_width_max_in_luma_samples/CtbSizeY))比特。当不存在时,推断subpic_width_minus1[i]的值等于Ceil(pic_width_max_in_luma_samples/CtbSizeY)-1。

subpic_height_minus1[i]加1规定第i个子图片以CtbSizeY为单位的高度。语法元素的长度为Ceil(Log2(pic_height_max_in_luma_samples/CtbSizeY))比特。当不存在时,推断subpic_height_minus1[i]的值等于Ceil(pic_height_max_in_luma_samples/CtbSizeY)-1。

subpic_treated_as_pic_flag[i]等于1规定CLVS中每个编解码图片的第i个子图片在不包括环路内滤波操作的解码过程中被视为图片。subpic_treated_as_pic_flag[i]等于0规定CLVS中每个编解码图片的第i个子图片在不包括环路内滤波操作的解码过程中不被视为图片。当不存在时,推断subpic_treated_as_pic_flag[i]的值等于0。

loop_filter_across_subpic_enabled_flag[i]等于1规定可以跨CLVS中的每个编解码图片中的第i个子图片的边界执行环路内滤波操作。

loop_filter_across_subpic_enabled_flag[i]等于0规定不跨CLVS中的每个编解码图片的第i个子图片的边界执行环路内滤波操作。当不存在时,推断loop_filter_across_subpic_enabled_pic_flag[i]的值等于1。

比特流一致性的要求是应用以下约束:

-对于任意两个子图片subpicA和subpicB,当subpicA的子图片索引小于subpicB的子图片索引时,subPicA的任何编解码条带NAL单元在解码顺序上都应当在subPicB的任何编解码条带NAL单元之前。

-子图片的形状应当是使得每个子图片在被解码时应当使其整个左边界和整个上边界由图片边界组成,或者由先前解码的子图片的边界组成。

sps_subpic_id[i]规定第i个子图片的子图片ID。sps_subpic_id[i]语法元素的长度为sps_subpic_id_len_minus1+1比特。

...

7.3.2.4图片参数集RBSP语法

7.4.3.4图片参数集RBSP语义

...

pps_num_subpics_minus1应当等于sps_num_subpics_minus1。

pps_subpic_id_len_minus1应当等于sps_subpic_id_len_minus1。

pps_subpic_id[i]规定第i个子图片的子图片ID。pps_subpic_id[i]语法元素的长度为pps_subpic_id_len_minus1+1比特。

比特流一致性的要求是,对于在0到sps_num_subpics_minus1范围内(包含端点)的任何i和j,当i小于j时,SubpicIdList[i]应当小于SubpicIdList[j]。

...

rect_slice_flag等于0规定每个条带内的片以光栅扫描顺序,并且在PPS中不信令通知条带信息。rect_slice_flag等于1规定每个条带内的片覆盖图片的矩形区域,并且在PPS中信令通知条带信息。当不存在时,rect_slice_flag被推断为等于1。当

single_slice_per_subpic_flag等于1规定每个子图片由一个且仅一个矩形条带组成。single_slice_per_subpic_flag等于0规定每个子图片可以包括一个或多个矩形条带。当

...

7.3.7.1通用条带标题语法

7.4.8.1通用条带标头语义

...

slice_subpic_id规定包含条带的子图片的子图片标识符。

当不存在时,推断slice_subpic_id的值等于0。

变量SubPicIdxbe被导出位使得SubpicIdList[SubPicIdx]等于slice_subpic_id的值

slice_address规定条带的条带地址。当不存在时,推断slice_address的值等于0。

如果rect_slice_flag等于0,适用如下:

-条带地址是光栅扫描片索引。

-slice_address的长度为Ceil(Log2(NumTilesInPic))比特。

-slice_address的值应当在0到NumTilesInPic-1的范围内(包含端点)。

否则(rect_slice_flag等于1),适用如下:

-条带地址是条带的子图片级别条带索引。

-slice_address的长度为

-slice_address的值应当在0至NumSlicesInSubpic[SubPicIdx]-1的范围内,(包含端点)。

比特流一致性的要求是应用以下约束:

-如果rect_slice_flag等于0或

-否则,slice_subpic_id和slice_address值的对将不等于相同编解码图片的任何其他编解码条带NAL单元的slice_subpic_id和slice_address值的对。

-当rect_slice_flag等于0时,图片的条带应按照它们的slice_address值的升序排列。

-图片的条带的形状应当是使得每个CTU在被解码时应当使其整个左边界和整个上边界由图片边界或由先前解码的(多个)CTU的边界组成。

...

图5是示出其中可以实现本文公开的各种技术的示例视频处理系统500的框图。各种实现可以包括系统500的一些或所有组件。系统500可以包括用于接收视频内容的输入502。视频内容可以以原始或未压缩的格式接收(例如8或10比特多分量像素值)或者可以是压缩的或编码格式。输入502可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括诸如以太网、无源光网络(PON)等的有线接口,以及诸如Wi-Fi或蜂窝接口的无线接口。

系统500可以包括编解码组件504,其可以实现在本文件中描述的各种编解码或编码方法。编解码组件504可以减少从输入502到编解码组件504的输出的视频的平均比特率,以产生视频的编解码表示。因此,编解码技术有时被称为视频压缩或视频代码转换技术。如组件506所表示的,编解码组件504的输出可以被存储,或者经由连接的通信被发送。组件508可以使用在输入502处接收的视频的存储或通信的比特流(或编解码)表示用于生成发送到显示接口510的像素值或可显示视频。从比特流表示生成用户可视视频的过程有时被称为视频解压缩。此外,虽然某些视频处理操作被称为“编解码”操作或工具,但是应当理解,编解码工具或操作在编码器处使用,并且与编解码的结果相反的对应解码工具或操作将由解码器执行。

外围总线接口或显示器接口的示例可以包括通用串行总线(USB)或高清多媒体接口(HDMI)或显示端口等。存储接口的示例包括SATA(串行高级技术附件)、PCI、IDE接口等。本文件中描述的技术可以在各种电子设备中实现,诸如移动电话、膝上型计算机、智能手机或能够执行数字数据处理和/或视频显示的其他设备。

图6是视频处理装置600的框图。装置600可以用于实现本文描述的一种或多种方法。装置600可以体现在智能手机、平板电脑、计算机、物联网(IoT)接收器等中。装置600可以包括一个或多个处理器602、一个或多个存储器604和视频处理硬件606。(多个)处理器602可以被配置成实现本文件中描述的一种或多种方法。(多个)存储器604可以用于存储用于实现本文所描述方法和技术的数据和代码。视频处理硬件606可以用于在硬件电路中实现本文件中描述的一些技术。

图7是示出可以利用本公开的技术的示例视频编解码系统100的框图。

如图7所示,视频编解码系统100可以包括源设备110和目标设备120。源设备110生成编码的视频数据,其可被称为视频编码设备。目标设备120可解码由源设备110生成的编码的视频数据,其可称为视频解码设备。

源设备110可以包括视频源112、视频编码器114和输入/输出(I/O)接口116。

视频源112可以包括诸如视频捕获设备、为从视频内容提供商接收视频数据的接口和/或用于生成视频数据的计算机图形系统的源,或者这类源的组合。视频数据可以包括一个或多个图片。视频编码器114编码来自视频源112的视频数据,以生成比特流。比特流可以包括形成视频数据的编解码表示的比特序列。比特流可以包括编解码图片和相关联数据。编解码图片是图片的编解码表示。相关联数据可以包括序列参数集、图片参数集和其他语法结构。I/O接口116可以包括调制器/解调器(调制解调器)和/或发送器。编码的视频数据可以经由I/O接口116通过网络130a直接发送到目标设备120。编码的视频数据还可以存储在存储介质/服务器130b上用于由目标设备120存取。

目标设备120可以包括I/O接口126、视频解码器124和显示设备122。

I/O接口126可以包括接收器和/或调制解调器。I/O接口126可以从源设备110或存储介质/服务器130b获取编码的视频数据。视频解码器124可以解码编码的视频数据。显示设备122可以向用户显示解码的视频数据。显示设备122可以与目标设备120集成在一起,或者可以在被配置为与外部显示设备接口的目标设备120的外部。

视频编码器114和视频解码器124可以根据视频压缩标准操作,诸如高效视频编解码(HEVC)标准、多功能视频编解码(VVM)标准和其他当前和/或进一步的标准。

图8是示出视频编码器200的示例的框图,视频编码器200可以是图7所示的系统100中的视频编码器114。

视频编码器200可以被配置成执行本公开的任何或所有技术。在图8的示例中,视频编码器200包括多个功能组件。本公开中描述的技术可以在视频编码器200的各种组件当中共享。在一些示例中,处理器可以被配置成执行本公开中所描述的任何或所有技术。

视频编码器200的功能组件可以包括分割单元201、预测单元202、残差生成单元207、变换单元208、量化单元209、逆量化单元210、逆变换单元211、重建单元212、缓冲区213和熵编码单元214,预测单元202可包括模式选择单元203、运动估计单元204、运动补偿单元205和帧内预测单元206。。

在其他示例中,视频编码器200可以包括更多、更少或不同的功能组件。在示例中,预测单元202可以包括帧内块复制(IBC)单元。IBC单元可以以其中至少一个参考图片是当前视频块所在的图片的IBC模式执行预测。

此外,一些组件(诸如,运动估计单元204和运动补偿单元205)可以高度集成,但出于解释目的,在图8的示例中分开表示。

分割单元201可以将图片分割成一个或多个视频块。视频编码器200和视频解码器300可以支持多种视频块尺寸。

模式选择单元203可以(例如基于误差结果)选择编解码模式(帧内或帧间)中的一种,并且将所产生的帧内或帧间编解码块提供到残差生成单元207以产生残差块数据,且提供到重建单元212以重建经编码块以用作参考图片。在一些示例中,模式选择单元203可以选择其中基于帧间预测信号和帧内预测信号预测的组合帧内和帧间预测(CIIP)模式。在帧间预测的情况下,模式选择单元203还可以为块选择运动矢量的分辨率(例如,子像素或整数像素精度)。

为了对当前视频块执行帧间预测,运动估计单元204可以通过将来自缓冲区213的一个或多个参考帧与当前视频块进行比较来生成当前视频块的运动信息。运动补偿单元205可以基于来自缓冲区213的除了与当前视频块相关联的图片之外的图片的运动信息和解码的样点来确定当前视频块的预测视频块。

运动估计单元204和运动补偿单元205可以对当前视频块执行不同的操作,例如,取决于当前视频块是在I条带、P条带还是B条带中。

在一些示例中,运动估计单元204可以对当前视频块执行单向预测,并且运动估计单元204可以在列表0或列表1的参考图片中搜索当前视频块的参考视频块。然后,运动估计单元204可以生成指示列表0或列表1中的参考图片的参考索引,该列表0或列表1中的参考图片包含参考视频块和指示当前视频块与参考视频块之间的空域位移的运动矢量。运动估计单元204可以输出参考索引、预测方向指示符和运动矢量作为当前视频块的运动信息。运动补偿单元205可以基于由当前视频块的运动信息指示的参考视频块来生成当前块的预测视频块。

在其他示例中,运动估计单元204可以对当前视频块执行双向预测,运动估计单元204可以在列表0中的参考图片中搜索当前视频块的参考视频块,并且还可以在列表1中的参考图片中搜索当前视频块的另一参考视频块。然后,运动估计单元204可以生成参考索引和运动矢量,该参考索引指示包含参考视频块的列表0和列表1中的参考图片,该运动矢量指示参考视频块与当前视频块之间的空域位移。运动估计单元204可以输出当前视频块的参考索引和运动矢量作为当前视频块的运动信息。运动补偿单元205可以基于由当前视频块的运动信息指示的参考视频块来生成当前视频块的预测视频块。

在一些示例中,运动估计单元204可以输出用于解码器的解码处理的完整运动信息集。

在一些示例中,运动估计单元204可以不输出当前视频的完整运动信息集。相反,运动估计单元204可以参考另一视频块的运动信息来信令通知当前视频块的运动信息。例如,运动估计单元204可以确定当前视频块的运动信息与相邻视频块的运动信息足够相似。

在一个示例中,运动估计单元204可以在与当前视频块相关联的语法结构中指示向视频解码器300指示当前视频块具有与另一视频块相同的运动信息的值。

在另一示例中,运动估计单元204可以在与当前视频块相关联的语法结构中标识另一视频块和运动矢量差(MVD)。运动矢量差指示当前视频块的运动矢量和所指示的视频块的运动矢量之间的差。视频解码器300可以使用所指示的视频块的运动矢量和运动矢量差来确定当前视频块的运动矢量。

如上所述,视频编码器200可以预测性地信令通知运动矢量。可以由视频编码器200实现的预测信令通知技术的两个示例包含高级运动矢量预测(AMVP)和Merge模式信令通知。

帧内预测单元206可以对当前视频块执行帧内预测。当帧内预测单元206对当前视频块执行帧内预测时,帧内预测单元206可以基于相同图片中的其他视频块的解码的样点来生成当前视频块的预测数据。当前视频块的预测数据可以包括预测的视频块和多种语法元素。

残差生成单元207可以通过从当前视频块减去(例如,由负号指示)当前视频块的(多个)预测视频块来生成当前视频块的残差数据。当前视频块的残差数据可以包括对应于当前视频块中样点的不同样点分量的残差视频块。

在其他示例中,针对当前视频块可能没有当前视频块的残差数据,例如在跳过模式中,并且残差生成单元207可以不执行减法操作。

变换处理单元208可以通过将一个或多个变换应用于与当前视频块相关联的残差视频块来生成当前视频块的一个或多个变换系数视频块。

在变换处理单元208生成与当前视频块相关联的变换系数视频块之后,量化单元209可以基于与当前视频块相关联的一个或多个量化参数(QP)值来量化与当前视频块相关联的变换系数视频块。

逆量化单元210和逆变换单元211可以分别对变换系数视频块应用逆量化和逆变换,以从变换系数视频块重建残差视频块。重建单元212可以将重建的残差视频块添加到来自由预测单元202生成的一个或多个预测视频块的对应样点来产生与当前块相关联的重建视频块,以储存在缓冲区213中。

在重建单元212重建视频块之后,可以执行环路滤波操作以减少视频块中的视频块伪影。

熵编码单元214可以从视频编码器200的其他功能组件接收数据。当熵编码单元214接收数据时,熵编码单元214可以执行一个或多个熵编码操作以生成熵编码的数据并输出包括熵编码的数据的比特流。

图9是示出视频解码器300的示例的框图,视频解码器300可以是图7所示的系统100中的视频解码器114。

视频解码器300可以被配置成执行本发明的任何或所有技术。在图8的示例中,视频解码器300包括各种功能组件。本公开中描述的技术可以在视频解码器300的各种组件当中共享。在一些示例中,处理器可以被配置成执行本公开中描述的任何或所有技术。

在图9的示例中,视频解码器300包括熵解码单元301、运动补偿单元302、帧内预测单元303、逆量化单元304、逆变换单元305以及重建单元306和缓冲区307。在一些示例中,视频解码器300可以执行通常与关于视频编码器200(图8)描述的编码遍相反的解码遍。

熵解码单元301可以检索编码的比特流。编码的比特流可以包括熵编解码的视频数据(例如,编码的视频数据块)。熵解码单元301可以解码熵编解码的视频数据,并且从熵解码的视频数据,运动补偿单元302可以确定包含运动矢量、运动矢量精度、参考图片列表索引和其他运动信息的运动信息。例如,运动补偿单元302可以通过执行AMVP和Merge模式来确定这种信息。

运动补偿单元302可以产生运动补偿块,可能基于插值滤波器执行插值。语法元素中可以包含要以子像素精度使用的插值滤波器的标识符。

运动补偿单元302可以使用诸如视频编码器200在视频块的编码期间所使用的插值滤波器来计算参考块的子整数像素的内插值。运动补偿单元302可以根据所接收的语法信息来确定视频编码器200所使用的插值滤波器,并使用插值滤波器来产生预测块。

运动补偿单元302可使用一些语法信息来确定用于对经编码的视频序列的(多个)帧和/或(多个)条带编码的块的尺寸、描述经编码的视频序列的图片的每一宏块如何被分割的分割信息、指示每一分割如何被编码的模式、每一经帧间编码的块的一个或多个参考帧(和参考帧列表)以及用于解码经编码的视频序列的其他信息。

帧内预测单元303可以使用例如在比特流中接收的帧内预测模式来从空域邻近的块形成预测块。逆量化单元303逆量化(即,去量化)比特流中提供的并且由熵解码单元301解码的量化的视频块系数。逆变换单元303应用逆变换。

重建单元306可以将残差块与由运动补偿单元202或帧内预测单元303生成的对应预测块相加,以形成经解码的块。如果需要,还可以应用去方块滤波器来对解码的块进行滤波,以便删除块效应伪影。然后,解码的视频块被存储在为后续的运动补偿/帧内预测提供参考块且还产生用于在显示设备上呈现的解码的视频的缓冲区307中。

图10-11示出了可以在例如图5-9所示的实施例中实现上述技术方案的示例方法。

图10示出了视频处理的示例方法1000的流程图。方法1000包括,在操作1010,执行包括包含一个或多个子图片的多个图片的视频和该视频的比特流之间的转换,该比特流符合格式规则,该格式规则规定在当前图片中的当前子图片具有与在和当前图片相同位置处的先前图片中的先前子图片的标识符不同的当前标识符的情况下,是否不允许当前子图片参考先前子图片用于帧间预测。

图11示出了视频处理的示例方法1100的流程图。方法1100包括,在操作1110,执行包括视频区域的视频和包括多个编解码层的视频的比特流之间的转换,该比特流符合格式规则,其规定基于条件是否允许多个编解码层的不同编解码层中的视频区域之间的层间预测(ILP)。

图12示出了视频处理的示例方法1200的流程图。方法1200包括,在操作1210,执行包括当前视频区域的视频和包括多个编解码层的该视频的比特流之间的转换,该比特流符合格式规则,该格式规则规定比特流包括是否允许当前视频区域和参考层中的视频区域之间的层间预测(ILP)的指示。

接下来提供一些实施例优选的解决方案列表。

1.一种视频处理的方法,包括执行包括包含一个或多个子图片的多个图片的视频和该视频的比特流之间的转换,其中比特流符合格式规则,格式规则规定在当前图片中的当前子图片具有与在和当前图片相同位置处的先前图片中的先前子图片的标识符不同的当前标识符的情况下,是否不允许当前子图片参考先前子图片用于帧间预测。

2.根据解决方案1所述的方法,其中,当前标识符是当前子图片标识符或当前子图片位置。

3.根据解决方案2所述的方法,其中,由于当前标识符不同于先前子图片的标识符,所以不允许当前子图片参考先前子图片用于帧间预测。

4.根据解决方案3所述的方法,其中,由于当前标识符不同于先前子图片的标识符,所以使用帧内编解码对当前子图片进行编解码。

5.根据解决方案3或4所述的方法,其中,当前子图片仅包括瞬时解码刷新(IDR)子图片或干净随机接入(CRA)子图片的一个或多个编解码条带。

6.根据解决方案3或4所述的方法,其中,当前子图片仅包括内部随机接入点(IRAP)子图片的一个或多个编解码条带。

7.根据解决方案3或4所述的方法,其中,当前子图片仅包括具有预定NAL单元类型集合中的一个或多个的编解码条带网络抽象层(NAL)单元。

8.根据解决方案7所述的方法,其中,预定NAL单位类型集合包括IDR_W_RADL、IDR_N_LP和CRA_NUT。

9.根据解决方案7所述的方法,其中,预定NAL单元类型集合包括IDR_W_RADL、IDR_N_LP、CRA_NUT、RSV_IRAP_11和RSV_IRAP_12。

10.根据解决方案3或4所述的方法,其中,比特流包括指示子图片被视为图片的语法元素。

11.根据解决方案3或4所述的方法,其中,当前子图片包括使用帧内预测、帧内块复制(IBC)预测和调色板模式预测中的一个或多个的编解码条带网络抽象层(NAL)单元。

12.根据解决方案2所述的方法,其中,当前子图片中的第一视频单元参考先前子图片中的第二视频单元,其中,当前子图片的子图片索引与先前子图片的子图片索引相同,并且其中子图片索引是分配给在编解码层视频序列(CLVS)中不能改变的子图片的编号。

13.根据解决方案12所述的方法,其中,当前子图片的子图片标识符与先前子图片的子图片标识符相同。

14.根据解决方案12所述的方法,其中,当前子图片的子图片标识符与先前子图片的子图片标识符不同。

15.根据解决方案2所述的方法,其中,当前子图片参考先前子图片,并且由于当前子图片由层标识符值和子图片索引或子图片标识符来标识,所以在比特流中信令通知当前子图片的指示。

16.一种视频处理的方法,包括执行包括视频区域的视频和包括多个编解码层的该视频的比特流之间的转换,其中比特流符合格式规则,并且其中格式规则规定基于条件是否允许多个编解码层的不同编解码层中的视频区域之间的层间预测(ILP)。

17.根据解决方案16所述的方法,其中,视频区域是子图片,并且其中允许层间预测。

18.根据解决方案17所述的方法,其中,不同编解码层中的两个子图片包括相同的子图片索引值和不同的子图片标识符值。

19.根据解决方案18所述的方法,其中,条件规定两个层与不同的视图顺序索引或不同的视图顺序标识符值相关联。

20.根据解决方案17所述的方法,其中,不同编解码层中的第一子图片和第二子图片由于第一子图片和第二子图片具有相同的子图片索引而处于同位的位置或具有合理的高度或宽度。

21.根据解决方案17所述的方法,其中,不同编解码层中的第一子图片和第二子图片由于第一子图片参考第二子图片而处于同位的位置或者具有合理的高度或宽度。

22.一种视频处理的方法,包括执行包括当前视频区域的视频和包括多个编解码层的该视频的比特流之间的转换,其中比特流符合格式规则,并且其中格式规则规定比特流包括是否允许当前视频区域和参考层中的视频区域之间的层间预测(ILP)的指示。

23.根据解决方案22所述的方法,其中视频区域是子图片。

24.根据解决方案23所述的方法,其中,在视频参数集(VPS)、解码参数集(DPS)、序列参数集(SPS)、图片参数集(PPS)、自适应参数集(APS)、序列标头或图片标头中信令通知指示。

25.根据解决方案23所述的方法,其中,参考层中的视频区域包括至少一个与当前视频区域的样点同位的样点。

26.根据解决方案23所述的方法,其中,参考层中的视频区域在当前视频区域的同位的区域之外。

27.根据解决方案23所述的方法,其中,在一个或多个补充增强信息(SEI)消息中信令通知指示。

28.根据解决方案23所述的方法,其中,不管参考层是否包括多个子图片,都信令通知指示。

29.根据解决方案23所述的方法,其中,参考层包括多个子图片,并且其中不管将图片分割成多个子图片是否与当前图片对齐使得参考层中的每个子图片与当前图片中的对应子图片同位,都信令通知指示。

30.根据解决方案1至29中任一项所述的方法,其中,转换包括从比特流中解码视频。

31.根据解决方案1至29中任一项所述的方法,其中,转换包括将视频编码到比特流中。

32.一种将表示视频的比特流存储到计算机可读记录介质的方法,包括根据解决方案1至29中任一项或多项所述的方法从视频生成比特流;以及将比特流写入计算机可读记录介质。

33.一种视频处理装置,包括被配置为实现解决方案1至32中任一项或多项所述的方法的处理器。

34.一种其上存储有指令的计算机可读介质,所述指令在被运行时使处理器实现解决方案1至32中的一项或多项所述的方法。

35.一种存储根据解决方案1至32中任一项或多项生成的比特流的计算机可读介质。

36.一种用于存储比特流的视频处理装置,其中,该视频处理装置被配置为实现解决方案1至32中任一项或多项所述的方法。

接下来提供一些实施例优选的解决方案的另一个列表。

P1.一种视频处理的方法,包括执行视频的图片和该视频的编解码表示之间的转换,其中图片中的多个子图片作为其比特宽取决于子图片数量的值的字段被包括在编解码表示中。

P2.根据解决方案P1所述的方法,其中,字段使用码字表示子图片的数量。

P3.根据解决方案P2所述的方法,其中,码字包括Golomb码字。

P4.根据解决方案P1到P3中任一项所述的方法,其中,子图片的数量的值被限制为小于或等于适合图片的编解码树块的整数数量。

P5.根据解决方案P1至P4中任一项所述的方法,其中,字段取决于与编解码表示相关联的编解码级别。

P6.一种视频处理的方法,包括执行视频的视频区域和该视频的编解码表示之间的转换,其中编解码表示符合格式规则,其中格式规则规定由于视频区域不包括任何子图片而省略指示子图片标识符的语法元素。

P7.根据解决方案P6所述的方法,其中,编解码表示包括具有指示视频区域不包括任何子图片的0值的字段。

P8.一种视频处理的方法,包括执行视频的视频区域和该视频的编解码表示之间的转换,其中编解码表示符合格式规则,其中格式规则规定在编解码表示中的视频区域标头级别省略视频区域中的子图片的标识符。

P9.根据解决方案P8所述的方法,其中,编解码表示根据子图片在视频区域标头中列出的顺序来数字地标识子图片。

P10.一种视频处理的方法,包括执行视频的视频区域和该视频的编解码表示之间的转换,其中编解码表示符合格式规则,其中格式规则规定在序列参数集级别或图片参数集级别包括视频区域中的子图片的标识符和/或子图片的标识符的长度。

P11.根据解决方案P10所述的方法,其中,长度被包括在图片参数集级别中。

P12.一种视频处理的方法,包括执行视频的视频区域和该视频的编解码表示之间的转换,其中编解码表示符合格式规则,其中格式规则规定包括在视频序列级别的编解码表示中的字段,以指示子图片标识符长度字段是否包括在视频序列级别的编解码表示中。

P13.根据解决方案P12所述的方法,其中,格式规则规定在编解码表示中的另一字段指示在编解码表示中包括视频区域的长度标识符的情况下,将所述字段设置为“1”。

P14.一种视频处理的方法,包括执行视频的视频区域和该视频的编解码表示之间的转换,其中编解码表示符合格式规则,并且其中格式规则规定在编解码表示中包括指示视频区域是否可以用作参考图片的指示。

P15.根据解决方案P14所述的方法,其中指示包括层ID和与视频区域相关联的索引或ID值。

P16.一种视频处理的方法,包括执行视频的视频区域和该视频的编解码表示之间的转换,其中编解码表示符合格式规则,并且其中格式规则规定在编解码表示中包括指示视频区域是否可以使用来自与参考层的视频区域相关联的多个样点值的层间预测(ILP)的指示。

P17.根据解决方案P16所述的方法,其中,指示被包括在序列级别、图片级别或视频级别。

P18.根据解决方案P16所述的方法,其中,参考层的视频区域包括至少一个与视频区域内的样点同位的样点。

P19.根据解决方案P16所述的方法,其中,指示被包括在一个或多个补充增强信息(SEI)消息中。

P20.根据上述权利要求中任一项所述的方法,其中,视频区域包括视频的子图片。

P21.根据上述权利要求中任一项所述的方法,其中,转换包括解析和解码编解码表示以生成视频。

P22.根据上述权利要求中任一项所述的方法,其中,转换包括对视频进行编码以生成编解码表示。

P23.一种视频解码装置,包括被配置成实现解决方案P1至P22中的一项或多项所述的方法的处理器。

P24.一种视频编码装置,包括被配置成实现解决方案P1至P22中的一项或多项所述的方法的处理器。

P25.一种其上存储有计算机代码的计算机程序产品,该代码当由处理器运行时,使处理器实现解决方案P1至P22中任一项所述的方法。

在一些实施例中,根据上述方法生成的比特流可以存储在计算机可读介质上。

本文件中描述的所公开的和其他解决方案、示例、实施例、模块和功能操作可以在数字电子电路中实现,或者在计算机软件、固件或硬件中实现,包括本文件中公开的结构及其结构性等同物,或者在它们中的一个或多个的组合中实现。所公开的和其他实施例可以实现为一个或多个计算机程序产品,即编码在计算机可读介质上的计算机程序指令的一个或多个模块,用于由数据处理装置运行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基底、存储器设备、影响机器可读传播信号的物质组合,或者它们中的一个或多个的组合。术语“数据处理装置”涵盖用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。除了硬件之外,装置可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如,机器生成的电、光或电磁信号,其被生成来编码信息以传输到合适的接收器装置。

计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适用于计算环境的其他单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文件中的一个或多个脚本),在专用于所讨论的程序的单个文件中,或者在多个协作文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署为在一台计算机上或在位于一个地点或分布在多个地点并通过通信网络互连的多台计算机上运行。

本文中描述的过程和逻辑流可以由运行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路来执行,并且装置也可以被实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。

举例来说,适于运行计算机程序的处理器包括通用和专用微处理器,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合到一个或多个用于存储数据的大容量存储设备,例如磁盘、磁光盘或光盘,以从该大容量存储设备接收数据或向其传送数据,或两者兼有。然而,计算机不必须有这样的设备。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路来补充或并入其中。

虽然本专利文件包含许多细节,但它们不应被解释为对任何主题或所要求保护的内容的范围的限制,而应解释为对特定技术的特定实施例所特有的特征的描述。在本专利文件中的单独的实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独实现或以任何合适的子组合来实现。此外,尽管特征可能在上面被描述为在某些组合中起作用,并且甚至最初被如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从组合中删除,并且所要求保护的组合可以针对子组合或子组合的变体。

类似地,虽然在附图中以特定的顺序描述了操作,但是这不应当被理解为要求这些操作以所示的特定顺序或依次顺序执行,或者要求所有示出的操作都被执行,以获得期望的结果。此外,在本专利文件中描述的实施例中的各种系统组件的分开不应被理解为在所有实施例中都需要这种分开。

仅描述了一些实现和示例,并且可以基于本专利文件中描述和示出的内容作出其他实现、增强和变化。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号