首页 / 专利库 / 电脑图像 / 图形处理单元 / 用于下一代视频的模式和参考类型数据的内容自适应熵编码

用于下一代视频的模式和参考类型数据的内容自适应熵编码

阅读:1042发布:2020-06-19

专利汇可以提供用于下一代视频的模式和参考类型数据的内容自适应熵编码专利检索,专利查询,专利分析的服务。并且本 申请 涉及用于 视频编码 (自适应性 熵编码 )的计算机实现的方法。一种用于视频编码的计算机实现的方法,包括:对于 视频 帧 的至少部分加载拆分数据、 水 平/垂直数据、模式数据、以及参考类型数据;确定第一估计的熵编码位成本,其包括用来对拆分数据和模式数据进行 联合编码 的熵编码位成本,以及用来对水平/垂直数据进行编码的熵编码位成本;确定第二估计的熵编码位成本,其包括用来对拆分数据和模式数据进行分开编码的熵编码位成本以及用来对水平/垂直数据进行编码的熵编码位成本;基于第一估计的熵编码位成本和第二估计的熵编码位成本中的最低者,对于视频帧的至少部分在对拆分数据和模式数据进行联合与分开编码之间选择;基于选择的编码,对拆分数据和模式数据进行联合或者分开熵编码,并且对水平/垂直数据进行熵编码;对参考类型数据进行熵编码;以及输出包括熵编码的拆分数据、模式数据、水平/垂直数据、以及参考类型数据的比特流。,下面是用于下一代视频的模式和参考类型数据的内容自适应熵编码专利的具体信息内容。

1.一种用于视频编码的计算机实现的方法,包括:
加载针对视频的至少部分视频帧的拆分数据、平/垂直数据、模式数据、以及参考类型数据;
确定第一估计的熵编码位成本,其包括用来对所述拆分数据和所述模式数据进行联合编码的熵编码位成本,以及用来对所述水平/垂直数据进行编码的熵编码位成本;
确定第二估计的熵编码位成本,其包括用来对所述拆分数据和所述模式数据进行分开编码的熵编码位成本,以及用来对所述水平/垂直数据进行编码的熵编码位成本;
基于所述第一估计的熵编码位成本和所述第二估计的熵编码位成本中的最低者,在对针对所述视频帧的至少所述部分视频帧的所述拆分数据和所述模式数据进行联合编码与分开编码之间进行选择;
基于选择的编码,对所述拆分数据和所述模式数据进行联合或者分开熵编码,并且对所述水平/垂直数据进行熵编码;
对所述参考类型数据进行熵编码;以及
输出包括熵编码的拆分数据、模式数据、水平/垂直数据、以及参考类型数据的比特流。
2.如权利要求1所述的方法,其中,所述视频帧的至少所述部分视频帧包括所述视频帧的片或者所述视频帧。
3.如权利要求1所述的方法,其中,所述参考类型数据包括间参考类型数据和多块参考类型数据,并且其中,对所述参考类型数据进行熵编码包括:
基于所述多块参考类型数据中的多个多帧参考类型选择针对所述多块参考类型数据的可变长度编码表;以及
基于所述可变长度编码表对所述多块参考类型数据进行编码。
4.如权利要求1所述的方法,其中,所述参考类型数据包括块间参考类型数据和多块参考类型数据,其中,所述视频帧包括P-画面,并且其中,对所述参考类型数据进行熵编码包括:
基于使用默认预测的代理可变长度编码,确定第一块间参考类型数据编码位成本;
基于使用修改的默认预测的代理可变长度编码,确定第二块间参考类型数据编码位成本;
基于使用预测的代理可变长度编码,确定第三块间参考类型数据编码位成本;以及基于所述第一块间参考类型数据编码位成本、所述第二块间参考类型数据编码位成本、以及所述第三块间参考类型数据编码位成本中的最低位成本,对所述块间参考类型数据进行编码。
5.如权利要求1所述的方法,其中,所述参考类型数据包括块间参考类型数据和多块参考类型数据,其中,所述视频帧包括B/F-画面,并且其中,对所述参考类型数据进行熵编码包括:
基于使用默认预测的代理可变长度编码,确定第一块间参考类型数据编码位成本;
基于使用修改的默认预测的代理可变长度编码,确定第二块间参考类型数据编码位成本;
基于使用没有预测的代理可变长度编码,确定第三块间参考类型数据编码位成本;
基于使用预测的代理可变长度编码,确定第四块间参考类型数据编码位成本;
基于其中用使用预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第五块间参考类型数据编码位成本;
基于使用类默认预测的代理可变长度编码,确定第六块间参考类型数据编码位成本;
基于其中用使用类默认预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第七块间参考类型数据编码位成本;以及
基于所述第一块间参考类型数据编码位成本至所述第七块间参考类型数据编码位成本中的最低位成本,对所述块间参考类型数据进行编码。
6.如权利要求1所述的方法,其中,对所述模式数据进行编码包括:
基于没有预测的代理可变长度编码,确定第一模式数据编码位成本;
基于其中用没有预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第二模式数据编码位成本;
基于其中用没有预测的符号运行编码对最频繁符号和第二最频繁符号进行编码的代理可变长度编码,确定第三模式数据编码位成本;
基于使用预测的代理可变长度编码,确定第四模式数据编码位成本;
基于其中用使用预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第五模式数据编码位成本;
基于其中用使用预测的符号运行编码对最频繁符号和第二最频繁符号进行编码的代理可变长度编码,确定第六模式数据编码位成本;以及
基于所述第一模式数据编码位成本至所述第六模式数据编码位成本中的最低位成本,对所述模式数据进行编码。
7.如权利要求1所述的方法,其中,对所述模式数据进行编码包括:
确定模式事件的可能排序,所述模式事件包括从最有可能到最不可能排序的可用模式;
确定在所述视频帧的第一块处的实际模式事件;以及
将所述实际模式事件编码为所述实际模式事件在模式事件的所述可能排序中的索引。
8.如权利要求1所述的方法,其中,对所述模式数据进行编码包括:
确定模式事件的本地可能排序,所述模式事件包括从最有可能到最不可能排序的可用模式,其中,确定模式的所述本地可能排序包括:
确定模式事件的全局可能排序;
确定在邻近所述视频帧的第一块的块处的实际模式事件;
基于被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第一子群组;
基于位于模式事件的所述全局可能排序中的模式事件而非被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第二子群组;以及将所述第一子群组和第二子群组连接以形成模式的所述本地可能排序;
确定在所述视频帧的第一块处的实际模式事件;以及
将所述实际模式事件编码为所述实际模式事件在模式事件的所述本地可能排序中的索引。
9.如权利要求1所述的方法,其中,对所述拆分数据和所述模式数据进行联合熵编码包括:使用具有帧内、跳过、自动、帧间、或者多帧中的至少一个的终止块的预测树,将所述拆分数据和所述模式数据联合熵编码为事件的集合,其中,如果块没有终止,则将所述块定义为拆分,并且其中,使用符号运行编码对所述预测树的第一级别进行编码,并且使用代理可变长度编码对所述预测树的更高级别进行编码。
10.如权利要求1所述的方法,其中,所述拆分数据包括表明块是否被进一步拆分的拆分位、以及表明所述拆分数据中的每个拆分是水平拆分还是垂直拆分的所述水平/垂直数据,
其中,所述模式数据包括针对所述视频帧的块或者分区的模式,并且其中,所述模式数据包括帧内模式、跳过模式、拆分模式、自动模式、帧间模式、或者多帧模式中的至少一个,其中,所述参考类型数据包括针对所述视频帧的帧间模式块的参考类型,其中,所述视频帧包括P-画面,并且其中,针对所述帧间模式块的参考类型包括以下中的至少一个:之前解码的帧、基于之前解码的超分辨率的帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧,
其中,所述参考类型数据包括针对所述视频帧的多帧模式块的参考类型,其中,所述视频帧包括P-画面,并且其中,针对所述多帧模式块的参考类型包括:包括之前解码的帧的第一参考类型;以及包括第二之前解码的帧的第二参考类型,
其中,所述参考类型数据包括针对所述视频帧的帧间模式块的参考类型,其中,所述视频帧包括B/F-画面,并且其中,针对所述帧间模式块的参考类型包括以下中的至少一个:之前解码的帧、投影的参考帧、基于之前解码的超分辨率的帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧,
其中,所述参考类型数据包括针对所述视频帧的多帧模式块的参考类型,其中,所述视频帧包括B/F-画面,并且其中,针对所述多帧模式块的参考类型包括:包括之前解码的帧的第一参考类型;以及包括第二之前解码的帧、基于之前解码的超分辨率的帧、投影的参考帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧中的至少一个的第二参考类型,
其中,所述视频帧的至少所述部分视频帧包括所述视频帧的片或者所述视频帧,其中,所述参考类型数据包括块间参考类型数据和多块参考类型数据,并且对所述参考类型数据进行编码包括:
(1)其中,对所述多块参考类型数据进行编码包括:
基于所述多块参考类型数据中的多个多帧参考类型选择针对所述多块参考类型数据的可变长度编码表;以及
基于所述可变长度编码表对所述多块参考类型数据进行编码,
(2)其中,所述视频帧包括P-画面,并且其中,对所述块间参考类型数据进行编码包括:
基于使用默认预测的代理可变长度编码,确定第一块间参考类型数据编码位成本;
基于使用修改的默认预测的代理可变长度编码,确定第二块间参考类型数据编码位成本;
基于使用预测的代理可变长度编码,确定第三块间参考类型数据编码位成本;以及基于所述第一块间参考类型数据编码位成本、所述第二块间参考类型数据编码位成本、以及所述第三块间参考类型数据编码位成本中的最低位成本,对所述块间参考类型数据进行编码,
(3)其中,所述视频帧包括B/F-画面,并且其中,对所述块间参考类型数据进行编码包括:
基于使用默认预测的代理可变长度编码,确定第一块间参考类型数据编码位成本;
基于使用修改的默认预测的代理可变长度编码,确定第二块间参考类型数据编码位成本;
基于使用没有预测的代理可变长度编码,确定第三块间参考类型数据编码位成本;
基于使用预测的代理可变长度编码,确定第四块间参考类型数据编码位成本;
基于其中用使用预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第五块间参考类型数据编码位成本;
基于使用类默认预测的代理可变长度编码,确定第六块间参考类型数据编码位成本;
基于其中用使用类默认预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第七块间参考类型数据编码位成本;以及
基于所述第一块间参考类型数据编码位成本至所述第七块间参考类型数据编码位成本中的最低位成本,对所述块间参考类型数据进行编码,
其中,对所述模式数据进行编码包括以下(a)-(c)中的一种:
(a)基于没有预测的代理可变长度编码,确定第一模式数据编码位成本;
基于其中用没有预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第二模式数据编码位成本;
基于其中用没有预测的符号运行编码对最频繁符号和第二最频繁符号进行编码的代理可变长度编码,确定第三模式数据编码位成本;
基于使用预测的代理可变长度编码,确定第四模式数据编码位成本;
基于其中用使用预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第五模式数据编码位成本;
基于其中用使用预测的符号运行编码对最频繁符号和第二最频繁符号进行编码的代理可变长度编码,确定第六模式数据编码位成本;以及
基于所述第一模式数据编码位成本至所述第六模式数据编码位成本中的最低位成本,对所述模式数据进行编码,
(b)确定模式事件的可能排序,所述模式事件包括从最有可能到最不可能排序的可用模式;
确定在所述视频帧的第一块处的实际模式事件;以及
将所述实际模式事件编码为所述实际模式事件在模式事件的所述可能排序中的索引,(c)确定模式事件的本地可能排序,所述模式事件包括从最有可能到最不可能排序的可用模式,其中,确定模式的所述本地可能排序包括:
确定模式事件的全局可能排序;
确定在邻近所述视频帧的第一块的块处的实际模式事件;
基于被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第一子群组;
基于位于模式事件的所述全局可能排序中的模式事件而非被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第二子群组;以及将所述第一子群组和第二子群组连接以形成模式的所述本地可能排序;
确定在所述视频帧的第一块处的实际模式事件;以及
将所述实际模式事件编码为所述实际模式事件在模式事件的所述本地可能排序中的索引,
其中,对所述拆分数据和所述模式数据进行联合编码包括:使用具有帧内、跳过、自动、帧间、或者多帧中的至少一个的终止块的预测树,将所述拆分数据和所述模式数据联合编码为事件的集合,其中,如果块没有终止,则将所述块定义为拆分,并且其中,使用符号运行编码对所述预测树的第一级别进行编码,并且使用代理可变长度编码对所述预测树的更高级别进行编码,以及
其中,对所述水平/垂直数据进行编码包括位图编码或者代理可变长度编码中的至少一个。
11.一种视频编码器,包括:
图像缓冲器;以及
图形处理单元,其包括熵编码器逻辑电路,其中,所述图形处理单元通信地耦合至所述图像缓冲器,并且其中,所述熵编码器逻辑电路被配置为:
加载针对视频帧的至少部分视频帧的拆分数据、水平/垂直数据、模式数据、以及参考类型数据;
确定第一估计的熵编码位成本,其包括用来对所述拆分数据和所述模式数据进行联合编码的熵编码位成本,以及用来对所述水平/垂直数据进行编码的熵编码位成本;
确定第二估计的熵编码位成本,其包括用来对所述拆分数据和所述模式数据进行分开编码的熵编码位成本、以及用来对所述水平/垂直数据进行编码的熵编码位成本;
基于所述第一估计的熵编码位成本和所述第二估计的熵编码位成本中的最低者,在对针对所述视频帧的至少所述部分视频帧的所述拆分数据和所述模式数据进行联合编码与分开编码之间进行选择;
基于选择的编码,对所述拆分数据和所述模式数据进行联合或者分开熵编码,并且对所述水平/垂直数据进行熵编码;
对所述参考类型数据进行熵编码;以及
输出包括熵编码的拆分数据、模式数据、水平/垂直数据、以及参考类型数据的比特流。
12.如权利要求11所述的视频编码器,其中,所述视频帧的至少所述部分视频帧包括所述视频帧的片或者所述视频帧。
13.如权利要求11所述的视频编码器,其中,所述参考类型数据包括块间参考类型数据和多块参考类型数据,并且其中,对所述参考类型数据进行熵编码包括所述熵编码器逻辑电路还被配置为:
基于所述多块参考类型数据中的多个多帧参考类型,选择针对所述多块参考类型数据的可变长度编码表;以及
基于所述可变长度编码表,对所述多块参考类型数据进行编码。
14.如权利要求11所述的视频编码器,其中,所述参考类型数据包括块间参考类型数据和多块参考类型数据,其中,所述视频帧包括P-画面,并且其中,对所述参考类型数据进行熵编码包括所述熵编码器逻辑电路还被配置为:
基于使用默认预测的代理可变长度编码,确定第一块间参考类型数据编码位成本;
基于使用修改的默认预测的代理可变长度编码,确定第二块间参考类型数据编码位成本;
基于使用预测的代理可变长度编码,确定第三块间参考类型数据编码位成本;以及基于所述第一块间参考类型数据编码位成本、所述第二块间参考类型数据编码位成本、以及所述第三块间参考类型数据编码位成本中的最低位成本,对所述块间参考类型数据进行编码。
15.如权利要求11所述的视频编码器,其中,对所述模式数据进行编码包括所述熵编码器逻辑电路还被配置为:
基于没有预测的代理可变长度编码,确定第一模式数据编码位成本;
基于其中用没有预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第二模式数据编码位成本;
基于其中用没有预测的符号运行编码对最频繁符号和第二最频繁符号进行编码的代理可变长度编码,确定第三模式数据编码位成本;
基于使用预测的代理可变长度编码,确定第四模式数据编码位成本;
基于其中用使用预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第五模式数据编码位成本;
基于其中用使用预测的符号运行编码对最频繁符号和第二最频繁符号进行编码的代理可变长度编码,确定第六模式数据编码位成本;以及
基于所述第一模式数据编码位成本至所述第六模式数据编码位成本中的最低位成本,对所述模式数据进行编码。
16.如权利要求11所述的视频编码器,其中,对所述模式数据进行编码包括所述熵编码器逻辑电路还被配置为:
确定模式事件的本地可能排序,所述模式事件包括从最有可能到最不可能排序的可用模式,其中,确定模式的所述本地可能排序包括所述熵编码器逻辑电路还被配置为:
确定模式事件的全局可能排序;
确定在邻近所述视频帧的第一块的块处的实际模式事件;
基于被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第一子群组;
基于位于模式事件的所述全局可能排序中的模式事件而非被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第二子群组;以及将所述第一子群组和第二子群组连接以形成模式的所述本地可能排序;
确定在所述视频帧的第一块处的实际模式事件;以及
将所述实际模式事件编码为所述实际模式事件在模式事件的所述本地可能排序中的索引。
17.如权利要求11所述的视频编码器,其中,对所述拆分数据和所述模式数据进行联合熵编码包括所述熵编码器逻辑电路还被配置为:使用具有帧内、跳过、自动、帧间、或者多帧中的至少一个的终止块的预测树,将所述拆分数据和所述模式数据联合熵编码为事件的集合,其中,如果块没有终止,则将所述块定义为拆分,并且其中,使用符号运行编码对所述预测树的第一级别进行编码,并且使用代理可变长度编码对所述预测树的更高级别进行编码。
18.如权利要求11所述的视频编码器,其中,所述拆分数据包括表明块是否被进一步拆分的拆分位、以及表明所述拆分数据中的每个拆分是水平拆分还是垂直拆分的所述水平/垂直数据,
其中,所述模式数据包括针对所述视频帧的块或者分区的模式,并且其中,所述模式数据包括帧内模式、跳过模式、拆分模式、自动模式、帧间模式、或者多帧模式中的至少一个,其中,所述参考类型数据包括针对所述视频帧的帧间模式块的参考类型,其中,所述视频帧包括P-画面,并且其中,针对所述帧间模式块的参考类型包括以下中的至少一个:之前解码的帧、基于之前解码的超分辨率的帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧,
其中,所述参考类型数据包括针对所述视频帧的多帧模式块的参考类型,其中,所述视频帧包括P-画面,并且其中,针对所述多帧模式块的参考类型包括:包括之前解码的帧的第一参考类型;以及包括第二之前解码的帧的第二参考类型,
其中,所述参考类型数据包括针对所述视频帧的帧间模式块的参考类型,其中,所述视频帧包括B/F-画面,并且其中,针对所述帧间模式块的参考类型包括以下中的至少一个:之前解码的帧、投影的参考帧、基于之前解码的超分辨率的帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧,
其中,所述参考类型数据包括针对所述视频帧的多帧模式块的参考类型,其中,所述视频帧包括B/F-画面,并且其中,针对所述多帧模式块的参考类型包括:包括之前解码的帧的第一参考类型;以及包括第二之前解码的帧、基于之前解码的超分辨率的帧、投影的参考帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧中的至少一个的第二参考类型,
其中,所述视频帧的至少所述部分视频帧包括所述视频帧的片或者所述视频帧,其中,所述参考类型数据包括块间参考类型数据和多块参考类型数据,并且其中,对所述参考类型数据进行熵编码包括所述熵编码器逻辑电路还被配置为:
基于所述多块参考类型数据中的多个多帧参考类型选择针对所述多块参考类型数据的可变长度编码表;以及
基于所述可变长度编码表对所述多块参考类型数据进行编码,
其中,所述参考类型数据包括块间参考类型数据和多块参考类型数据,其中,所述视频帧包括P-画面,并且其中,对所述参考类型数据进行熵编码包括所述熵编码器逻辑电路还被配置为:
基于使用默认预测的代理可变长度编码,确定第一块间参考类型数据编码位成本;
基于使用修改的默认预测的代理可变长度编码,确定第二块间参考类型数据编码位成本;
基于使用预测的代理可变长度编码,确定第三块间参考类型数据编码位成本;以及基于所述第一块间参考类型数据编码位成本、所述第二块间参考类型数据编码位成本、以及所述第三块间参考类型数据编码位成本中的最低位成本,对所述块间参考类型数据进行编码,
其中,所述参考类型数据包括块间参考类型数据和多块参考类型数据,其中,所述视频帧包括B/F-画面,并且其中,对所述参考类型数据进行熵编码包括所述熵编码器逻辑电路还被配置为:
基于使用默认预测的代理可变长度编码,确定第一块间参考类型数据编码位成本;
基于使用修改的默认预测的代理可变长度编码,确定第二块间参考类型数据编码位成本;
基于使用没有预测的代理可变长度编码,确定第三块间参考类型数据编码位成本;
基于使用预测的代理可变长度编码,确定第四块间参考类型数据编码位成本;
基于其中用使用预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第五块间参考类型数据编码位成本;
基于使用类默认预测的代理可变长度编码,确定第六块间参考类型数据编码位成本;
基于其中用使用类默认预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第七块间参考类型数据编码位成本;以及
基于所述第一块间参考类型数据编码位成本至所述第七块间参考类型数据编码位成本中的最低位成本,对所述块间参考类型数据进行编码,
其中,对所述模式数据进行编码包括所述熵编码器逻辑电路还被配置为:
基于没有预测的代理可变长度编码,确定第一模式数据编码位成本;
基于其中用没有预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第二模式数据编码位成本;
基于其中用没有预测的符号运行编码对最频繁符号和第二最频繁符号进行编码的代理可变长度编码,确定第三模式数据编码位成本;
基于使用预测的代理可变长度编码,确定第四模式数据编码位成本;基于其中用使用预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第五模式数据编码位成本;
基于其中用使用预测的符号运行编码对最频繁符号和第二最频繁符号进行编码的代理可变长度编码,确定第六模式数据编码位成本;以及
基于所述第一模式数据编码位成本至所述第六模式数据编码位成本中的最低位成本,对所述模式数据进行编码,
其中,对所述模式数据进行编码包括所述熵编码器逻辑电路还被配置为:
确定模式事件的可能排序,所述模式事件包括从最有可能到最不可能排序的可用模式;
确定在所述视频帧的第一块处的实际模式事件;以及
将所述实际模式事件编码为所述实际模式事件在模式事件的所述可能排序中的索引,其中,对所述模式数据进行编码包括所述熵编码器逻辑电路还被配置为:
确定模式事件的本地可能排序,所述模式事件包括从最有可能到最不可能排序的可用模式,其中,确定模式的所述本地可能排序包括所述熵编码器逻辑电路还被配置为:
确定模式事件的全局可能排序;
确定在邻近所述视频帧的第一块的块处的实际模式事件;
基于被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第一子群组;
基于位于模式事件的所述全局可能排序中的模式事件而非被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第二子群组;以及将所述第一子群组和第二子群组连接以形成模式的所述本地可能排序;
确定在所述视频帧的第一块处的实际模式事件;以及
将所述实际模式事件编码为所述实际模式事件在模式事件的所述本地可能排序中的索引,
其中,对所述拆分数据和所述模式数据进行联合熵编码包括所述熵编码器逻辑电路还被配置为:使用具有帧内、跳过、自动、帧间、或者多帧中的至少一个的终止块的预测树,将所述拆分数据和所述模式数据联合熵编码为事件的集合,其中,如果块没有终止,则将所述块定义为拆分,其中,使用符号运行编码对所述预测树的第一级别进行编码,并且使用代理可变长度编码对所述预测树的更高级别进行编码,并且其中,对所述水平/垂直数据进行熵编码包括所述熵编码器逻辑电路还被配置为执行位图编码或者代理可变长度编码中的至少一个。
19.一种系统,包括:
被配置为对编码的比特流进行解码的视频解码器,其中,所述视频解码器被配置为:
对所述编码的比特流进行解码,以确定与视频帧的至少部分视频帧的拆分数据和模式数据相关联的联合或者分开编码头部;
当所述联合或者分开编码头部表明联合编码时,对所述拆分数据和所述模式数据进行联合熵解码,并且对水平/垂直数据进行熵解码;
当所述联合或者分开编码头部表明分开编码时,对所述拆分数据和所述模式数据进行分开熵解码,并且对所述水平/垂直数据进行熵解码;以及
对所述编码的比特流进行熵解码来确定针对所述视频帧的所述部分视频帧的参考类型数据。
20.如权利要求19所述的系统,其中,所述参考类型数据包括块间参考类型数据和多块参考类型数据,其中,所述视频解码器被配置为:
基于所述多块参考类型数据中的多个多帧参考类型,选择针对所述多块参考类型数据的可变长度编码表;以及
基于所述可变长度编码表,对所述多块参考类型数据进行解码。
21.如权利要求19所述的系统,其中,所述参考类型数据包括块间参考类型数据和多块参考类型数据,其中,所述视频帧包括P-画面,并且其中,所述视频解码器被配置为:
从表明以下中的至少一个的比特流确定块间参考类型编码技术指示符:基于使用默认预测的代理可变长度编码的编码、基于使用修改的默认预测的代理可变长度编码的编码、或者基于使用预测的代理可变长度编码的编码;以及
基于表明的技术,对所述块间参考类型数据进行熵解码。
22.如权利要求19所述的系统,其中,对所述拆分数据和所述模式数据进行分开熵解码包括所述视频解码器被配置为:
确定模式事件的本地可能排序,所述模式事件包括从最有可能到最不可能排序的可用模式,其中,确定模式的所述本地可能排序包括所述视频解码器被配置为:
确定模式事件的全局可能排序;
确定在邻近所述视频帧的第一块的块处的实际模式事件;
基于被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第一子群组;
基于位于模式事件的所述全局可能排序中的模式事件而非被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第二子群组;以及将所述第一子群组和第二子群组连接以形成模式的所述本地可能排序;
从所述比特流确定针对所述视频帧的第一块的实际模式事件的索引;以及基于模式事件的所述索引和所述本地可能排序,确定针对所述视频帧的所述第一块的所述实际模式事件。
23.如权利要求19所述的系统,其中,所述拆分数据包括表明块是否被进一步拆分的拆分位,并且其中,所述水平/垂直数据表明所述拆分数据中的拆分是水平拆分还是垂直拆分,
其中,所述模式数据包括针对所述视频帧的块或者分区的模式,并且其中,所述模式数据包括帧内模式、跳过模式、拆分模式、自动模式、帧间模式、或者多帧模式中的至少一个,其中,所述参考类型数据包括针对所述视频帧的帧间模式块的参考类型,其中,所述视频帧包括P-画面,并且其中,针对所述帧间模式块的参考类型包括以下中的至少一个:之前解码的帧、基于之前解码的超分辨率的帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧,
其中,所述参考类型数据包括针对所述视频帧的多帧模式块的参考类型,其中,所述视频帧包括P-画面,并且其中,针对所述多帧模式块的参考类型包括:包括之前解码的帧的第一参考类型;以及包括第二之前解码的帧的第二参考类型,
其中,所述参考类型数据包括针对所述视频帧的帧间模式块的参考类型,其中,所述视频帧包括B/F-画面,并且其中,针对所述帧间模式块的参考类型包括以下中的至少一个:之前解码的帧、投影的参考帧、基于之前解码的超分辨率的帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧,
其中,所述参考类型数据包括针对所述视频帧的多帧模式块的参考类型,其中,所述视频帧包括B/F-画面,并且其中,针对所述多帧模式块的参考类型包括:包括之前解码的帧的第一参考类型;以及包括第二之前解码的帧、基于之前解码的超分辨率的帧、投影的参考帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧中的至少一个的第二参考类型,
其中,所述参考类型数据包括块间参考类型数据和多块参考类型数据,并且其中,所述视频解码器被配置为:
基于所述多块参考类型数据中的多个多帧参考类型,选择针对所述多块参考类型数据的可变长度编码表;以及
基于所述可变长度编码表,对所述多块参考类型数据进行熵解码,
其中,所述参考类型数据包括块间参考类型数据和多块参考类型数据,其中,所述视频帧包括P-画面,并且其中,所述视频解码器被配置为:
从表明以下中的至少一个的比特流确定块间参考类型编码技术指示符:基于使用默认预测的代理可变长度编码的编码、基于使用修改的默认预测的代理可变长度编码的编码、或者基于使用预测的代理可变长度编码的编码;以及
基于表明的技术,对所述块间参考类型数据进行熵解码,
其中,所述参考类型数据包括块间参考类型数据和多块参考类型数据,其中,所述视频帧包括B/F-画面,并且其中,所述视频解码器被配置为:
从表明以下中的至少一个的比特流确定块间参考类型编码技术指示符:基于使用默认预测的代理可变长度编码的编码、基于使用修改的默认预测的代理可变长度编码的编码、基于使用没有预测的代理可变长度编码的编码、基于使用预测的代理可变长度编码的编码、基于其中用使用预测的符号运行编码对最频繁符号进行编码的代理可变长度编码的编码、或者基于使用类默认预测的代理可变长度编码的编码;以及
基于表明的技术,对所述块间参考类型数据进行熵解码,
其中,对所述拆分数据和所述模式数据进行分开熵解码包括所述视频解码器被配置为:
确定模式事件的可能排序,所述模式事件包括从最有可能到最不可能排序的可用模式;
从所述比特流确定针对所述视频帧的第一块的实际模式事件的索引;以及基于模式事件的所述索引和所述可能排序,确定针对所述视频帧的所述第一块的所述实际模式事件,并且
其中,对所述拆分数据和所述模式数据进行分开熵解码包括所述视频解码器被配置为:
确定模式事件的本地可能排序,所述模式事件包括从最有可能到最不可能排序的可用模式,其中,确定模式的所述本地可能排序包括所述视频解码器被配置为:
确定模式事件的全局可能排序;
确定在邻近所述视频帧的第一块的块处的实际模式事件;
基于被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第一子群组;
基于位于模式事件的所述全局可能排序中的模式事件而非被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第二子群组;以及将所述第一子群组和第二子群组连接以形成模式的所述本地可能排序;
从所述比特流确定针对所述视频帧的第一块的实际模式事件的索引;以及基于模式事件的所述索引和所述本地可能排序,确定针对所述视频帧的所述第一块的所述实际模式事件。
24.一种机器可读介质,包括:
多个指令,其响应于在计算设备上被执行,使所述计算设备执行根据权利要求1-10中任何一个所述的方法。
25.一种装置,包括:
用于执行根据权利要求1-10中任何一个所述的方法的单元。

说明书全文

用于下一代视频的模式和参考类型数据的内容自适应熵编码

[0001] 相关申请的交叉引用
[0002] 本申请要求2013年1月30日递交的美国临时申请号61/758,314且名为“下一代视频编码”的优先权,其整个内容特此通过引用并入本文。

背景技术

[0003] 视频编码器压缩视频信息,以便能够通过给定的带宽发送更多信息。压缩的信号然后可以传输至具有解码器的接收器,解码器在显示之前将信号解码或者解压。
[0004] 高效视频编码(HEVC)是正在由视频编码联合协作小组(JCT-VC) 开发的、最新的视频压缩标准,该小组是由ISO/IEC运动图像专家组 (MPEG)和ITU-T视频编码专家组(VCEG)形成的。HEVC是响应于之前的H.264/AVC(高级视频编码)标准没有提供足够的压缩以发展更高分辨率的视频应用而开发的。类似于之前的视频编码标准,HEVC包含基本功能模,诸如内/帧间预测、转换、量化、环路内滤波、以及熵编码。
[0005] 目前的HEVC标准可以尝试改善H.264/AVC标准的限制,诸如对于允许的预测分区和编码分区的有限的选择、有限的允许的多个参考和预测产生、有限的转换块尺寸和实际的转换、用于减小编码效应(artifact)的有限机制、以及低效的熵编码技术。然而,目前的HEVC标准可以使用迭代法来解决这样的问题。
[0006] 例如,随着要压缩的视频的不断增加的分辨率以及高视频质量的期望,使用现有视频编码标准(诸如H.264或甚至诸如H.265/HEVC的演进标准) 来编码所要求的对应比特率/带宽相对高。上述的标准使用传统方法的展开形式来隐含处理不充分压缩/质量问题,但通常结果是有限的。
[0007] 在下一代视频(NGV)编解码器项目的背景内开发的本描述处理了以下一般问题:设计令可实现的压缩效率最大化并对于在设备上实现保持足够实用的高级视频编解码器。
例如,随着视频的不断增加的分辨率以及由于好显示器的可用性而导致的对高视频质量的期望,使用现有视频编码标准(诸如更早的MPEG标准、甚至更近的H.264/AVC标准)所要求的对应比特率/带宽相对高。H.264/AVC不被认为对于发展更高分辨率的视频应用提供足够高的压缩。
附图说明
[0008] 本文描述的材料在附图中是以示例的方式,而非以限制的方式示出。为了说明的简洁和清楚,在图中示出的要素不一定是成比例绘出的。例如,为了清楚,一些要素的尺寸可以相对于其他要素夸大。此外,认为适当时,附图标记在附图中重复,以表明对应的或类似的要素。在图中:
[0009] 图1是示例下一代视频编码器的示意图;
[0010] 图2是示例下一代视频解码器的示意图;
[0011] 图3(a)是示例下一代视频编码器和子系统的示意图;
[0012] 图3(b)是示例下一代视频解码器和子系统的示意图;
[0013] 图4是示例熵编码器模块的示意图;
[0014] 图5是示例熵解码器模块的示意图;
[0015] 图6是示例熵编码器模块的示意图;
[0016] 图7是示例熵解码器模块的示意图;
[0017] 图8是示出示例处理的流程图
[0018] 图9示出示例比特流;
[0019] 图10是示出示例处理的流程图;
[0020] 图11是操作中的示例视频编码系统和视频编码处理的示意图;
[0021] 图11是示例视频编码系统的示意图;
[0022] 图12是示出示例编码处理的流程图;
[0023] 图13示出示例比特流;
[0024] 图14是示出示例解码处理的流程图;
[0025] 图15(A)、15(B)、以及15(C)提供操作中的示例视频编码系统和视频编码处理的示意图;
[0026] 图16是示例视频编码系统的示意图;
[0027] 图17是示例系统的示意图;
[0028] 图18示出示例设备;
[0029] 图19是示例画面构造和预测依赖性的示意图;
[0030] 图20是示例预测参考类型的示意图;
[0031] 图21是示出示例处理的流程图;
[0032] 图22是示出示例处理的流程图;
[0033] 图23是示出示例处理的流程图;
[0034] 图24是示例P-画面的示例拆分和模式的示意图;
[0035] 图25是示例P-画面的示例拆分和模式的示意图;
[0036] 图26是示例B/F-画面的示例拆分和模式的示意图;
[0037] 图27是示例B/F-画面的示例拆分和模式的示意图;
[0038] 图28是示例P-画面的示例块间参考类型的示意图;
[0039] 图29是示例P-画面的示例块间参考类型的示意图;
[0040] 图30是示例B/F-画面的示例块间参考类型的示意图;
[0041] 图31是都依据至少本公开的一些实施方式布置的示例B/F-画面的示例块间参考类型的示意图。

具体实施方式

[0042] 现在参考附图描述一个或多个实施例或者实施方式。虽然讨论了特定配置和布置,但应该理解的是,这仅是出于示例性目的。相关领域的技术人员将会认识到可以采用其他配置和布置,而不脱离描述的精神和范围。对于相关领域的技术人员明显的是,本文描述的技术和/或布置还可以在除本文描述外的各种其他系统和应用中采用。
[0043] 虽然下面的描述记载了可以表现在架构(例如诸如片上系统(SoC)架构)中的各种实施方式,但本文描述的技术和/或布置的实施方式不限于特定架构和/或计算系统,并可以由用于类似目的的任何架构和/或计算系统实施方式。例如,采用例如多个集成电路(IC)芯片和/或封装的各种架构、和/或各种计算设备和/或消费者电子(CE)设备(诸如机顶盒、智能电话等) 可以实现本文描述的技术和/或布置。此外,虽然下面的描述可能记载大量具体细节(诸如逻辑实施方式、系统部件的类型和相互关系、逻辑分段/集成选择等),但要求保护的主题可以付诸实践而没有这样的具体细节。在其他实例中,一些材料(诸如例如控制构造和全软件指令序列)可能不详细示出,以不模糊本文公开的材料。
[0044] 本文公开的材料可以以硬件固件、软件、或者其任何组合实现。本文公开的材料还可以实现为存储在机器可读介质的指令,该指令可以由一个或多个处理器读出并执行。机器可读介质可以包含用于以由机器(例如计算设备)可读的形式存储或者传输信息的任何介质和/或机构。例如机器可读介质可以包含:只读存储器(ROM);随机存取存储器(RAM);
磁盘存储介质;光学存储介质;闪存设备;电、光学、声学或者其他形式的传播的信号(例如载波、红外线信号、数字信号等)、以及其他。
[0045] 说明书中提到的“一个实施方式”、“实施方式”、“示例实施方式”等表明了描述的实施方式可以包含特定的特征、构造、或者特性,但是每个实施例可能不一定包含该特定的特征、构造、或者特性。此外,该词组不一定是指相同的实施方式。此外,在结合实施例描述了特定的特征、构造、或者特性时,认为结合其他实施方式来运用该特征、构造、或者特性是在本领域的技术人员知识范围内的,无论本文是否明确描述。
[0046] 下面描述与用于视频系统的内容自适应熵编码相关的系统、装置、物品、以及方法。
[0047] 下面描述下一代视频(NGV)系统、装置、物品、以及方法。NGV视频编码在视频编码处理中可以合并大量基于内容的自适应性,来实现更高压缩。如上所述,H.264/AVC标准可能具有各种限制以及不断的尝试来改善该标准,诸如例如HEVC标准可以使用迭代法来处理这样的限制。本文将描述包含编码器和解码器的NGV系统。
[0048] 例如,H.264标准可以支持2个模式的熵编码。在第一模式、自适应 VLC(可变长度编码)中,转换系数可以使用上下文自适应VLC(CAVLC) 来编码,并且所有其他语法元素(例如开销数据、模式、运动矢量等)可以使用指数哥伦布编码来编码。CAVLC编码的数据和指数哥伦布编码的数据可以被复用以产生编码的比特流。在第二模式中,所有数据可以使用上下文自适应二进制算术编码(CABAC)来编码。对应的解码器还可以以2 个模式操作,在第一模式中分解并解码复用的比特流,并在第二模式中解码CABAC编码的比特流。这样的技术可能具有限制。例如,CABAC编码可能有效,但可能比较复杂,使得更高分辨率上下文中的吞吐量可能受限。此外,通过将数据类型组合在一起用于编码,熵编码的效率和复杂性可能没被优化。
[0049] 在一些视频编解码器实施方式中,各种数据(诸如开销数据、模式、运动矢量、和/或转换系数)的熵编码和解码可以是编码效率和系统复杂性的显著原因之一。在一些示例中,本文讨论的技术可以平衡编码效率和系统复杂性。
[0050] 在一些示例中,在熵编码器模块处可以接收第一视频数据和第二视频数据用于熵编码。第一视频数据和第二视频数据可以是不同的数据类型(例如头部数据、变形参数、合成参数、或者全局映射数据或者运动矢量或者帧内预测分区数据等,如本文进一步讨论的那样)。可以基于关联于第一视频数据的参数(诸如例如第一视频数据的压缩的比特的数量、关联于第一视频数据的预定指示符或者标志、预定阈值、或者启发式地确定的阈值等),对于第一视频数据确定第一熵编码技术。在一些示例中,第一熵编码技术可以选自以下中的一个:自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术。第一视频数据可以使用第一熵编码技术进行熵编码,并且第二视频数据可以使用第一熵编码技术进行熵编码。在一些示例中,可以基于如相对于第一视频数据讨论的参数,对于第二视频数据确定第二熵编码技术。在一些示例中,第二熵编码技术可以从以下选项确定:该选项包含自适应符号运行可变长度编码技术、自适应代理可变长度编码技术、自适应矢量可变长度编码、自适应1维可变长度编码技术、自适应2维可变长度编码技术、或者本文讨论的其他技术。在一些示例中,第二熵编码技术可以对于第二视频数据的数据类型预先确定。将第一视频数据和第二视频数据熵编码可以产生第一压缩的视频数据和第二压缩的视频数据。第一和第二压缩的视频数据可以组装来产生输出比特流。
[0051] 输出比特流可以从编码器传输到解码器,其可以将比特流分解来确定第一和第二压缩的视频数据。压缩的视频数据可以被熵解码来产生熵解码的视频数据,其可以进一步被解码来产生视频帧。视频帧可以传输至显示器设备来呈现给用户。
[0052] 在一些示例中,可以在熵编码器模块处接收附加的视频数据类型用于熵编码。例如,第三、第四、第五、第六、第七、或更多的视频数据可以被熵编码来产生相关联的压缩的视频数据,其可以组装在输出比特流中,被传输,并接下来经由解码器被熵解码。本文进一步讨论各种数据类型和编码/解码技术选项和实施方式。
[0053] 本文使用的术语“编码器(coder)”可以指编码器(encoder)和/或解码器(decoder)。类似地,本文使用的术语“编码(coding)”可以指经由编码器执行视频编码(encoding)和/或经由解码器执行视频解码(decoding)。例如,视频编码器和视频解码器可以都是能够编码视频数据的编码器的示例。此外,本文使用的术语“编解码器”可以指任何处理、程序或者一组操作,诸如例如可以实现编码器和/或解码器的软件、固件、和/或硬件的任何组合。此外,本文使用的词组“视频数据”可以指关联于视频编码的任何类型的数据,诸如例如视频帧、图像数据、编码的比特流数据等。
[0054] 图1是跟据本公开的至少一些实施方式布置的示例下一代视频编码器 100的示意图。如图所示,编码器100可以接收输入视频101。输入视频101 可以包含用于编码的任何适当的输入视频,诸如例如视频序列的输入帧。如图所示,输入视频101可以经由内容预分析器模块102被接收。内容预分析器模块102可以被配置为执行输入视频101的视频帧的内容的分析,来确定用于改善视频编码效率和速度性能的各种类型的参数。例如,内容预分析器模块102可以确定平和垂直梯度信息(例如Rs、Cs)、方差、每画面的空间复杂性、每画面的时间复杂性、场景改变检测、运动范围估计、增益检测、预测距离估计、对象估计的数量、区域边界检测、空间复杂性映射计算、焦点估计、胶片颗粒估计等。由内容预分析器模块102产生的参数可以由编码器100(例如经由编码控制器103)使用和/或量化,并传达至解码器。如图所示,视频帧和/或其他数据可以从内容预分析器模块102 传输至自适应画面组织器模块104,其可以确定每个视频帧的画面类型(例如I-、P-、或者F/B-画面),并根据需要将视频帧重新排序。在一些示例中,自适应画面组织器模块104可以包含配置为产生帧部分的帧部分产生器。在一些示例中,内容预分析器模块102和自适应画面组织器模块104可以一起被视为编码器100的预分析器子系统。
[0055] 如图所示,视频帧和/或其他数据可以从自适应画面组织器模块104传输至预测分区产生器模块105。在一些示例中,预测分区产生器模块105可以将帧或者画面分割为图块或者超片段等。在一些示例中,(例如在模块104 和105之间的)附加的模块可以被提供用来将帧或者画面分割为图块或者超片段。预测分区产生器模块105可以将每个图块或者超片段分割为潜在的预测分段或者分区。在一些示例中,可以使用如下分段技术来确定潜在的预测分段:诸如例如k-d树分段技术、bi-tree分段技术等,其可以基于单独视频帧的画面类型(例如I-、P-、或者F/B-画面)、被分区的帧部分的特性等来确定。在一些示例中,确定的潜在的预测分段可以是对预测(例如帧间或者帧内预测)的分区,并可以描述为预测分区或者预测块等。
[0056] 在一些示例中,选择的预测分段(例如预测分区)可以根据潜在的预测分段确定。例如,选择的预测分段可以基于对每个潜在的预测分段确定使用特性的预测和基于运动的多参考预测或者帧内预测,并且确定预测参数。对于每个潜在的预测分段,可以通过确定原始的像素与预测像素的差异来确定潜在的预测误差,并且选择的预测分段可以是具有最小预测误差的潜在的预测分段。在其他示例中,可以基于包含加权评分的率失真优化来确定选择的预测分段,该加权评分基于用于对分段进行编码的比特数和关联于预测分段的预测误差。
[0057] 如图所示,在差异确定器106处的选择的预测分段(例如当前帧的预测分区)的原始像素可以与预测的分区(例如,基于参考帧的当前帧的预测分区的预测和其他预测数据,诸如帧间或者帧内预测数据)的原始像素确定差异。确定预测的分区将在下文进一步描述,并且可以包含图1所示的解码循环。来自差异确定的任何剩余或者剩余数据(例如分区预测误差数据)可以传输至编码分区产生器模块107。在一些示例中,诸如对于任何画面类型(I-、F/B-或者P-画面)中的预测分区的帧内预测,编码分区产生器模块107可以经由开关107a和107b被绕开。在这样的示例中,仅单级的分段可以被执行。这样的分段可以描述为预测分段(如描述的那样)或者编码分段或者两者。在各种示例中,这样的分段可以经由预测分区产生器模块105(如讨论的那样)执行,或者如本文进一步讨论的那样,这样的分段可以经由(经由编码分区产生器模块107实现的)k-d树帧内预测/编码分区器模块或者bi-tree帧内预测/编码分区器模块执行。
[0058] 在一些示例中,如果有的话,分区预测误差数据可能不足够显著来授权编码。在可能期望将分区预测误差数据编码并且分区预测误差数据与帧间预测相关联等的其他示例中,编码分区产生器模块107可以确定预测分区的编码分区。在一些示例中,可能不需要编码分区产生器模块107,因为分区可以没有编码分段而被编码(例如如图所示,经由(经由开关107a和 107b可用的)绕开路径)。无论是否有编码分段,在剩余或者剩余数据要求编码时,分区预测误差数据(其可以接下来描述为任何事件中的编码分区) 可以传输至自适应转换模块108。在一些示例中,预测分区产生器模块105 和编码分区产生器模块107可以一起被视为编码器100的分区器子系统。在各种示例中,编码分区产生器模块107可以对分区预测误差数据、原始的像素数据、剩余数据、或者小波数据进行操作。
[0059] 编码分区产生器模块107可以使用bi-tree和/或k-d树分段技术等,产生例如分区预测误差数据的潜在的编码分段(例如编码分区)。在一些示例中,潜在的编码分区可以经由自适应转换模块108使用具有各种块尺寸的自适应或者固定转换来转换,并且选择的编码分段和选择的转换(例如自适应或固定的)可以基于率失真优化或者其他基础来确定。在一些示例中,选择的编码分段和/或选择的转换可以基于以编码分区尺寸等为基础的预定的选择方法来确定。
[0060] 例如,自适应转换模块108可以包含用于执行参数转换的第一部分或者部件,以允许小至中尺寸块的本地最佳转换编码;以及第二部分或者部件用于使用来自各种转换(包含参数转换)的固定转换(诸如离散余弦转换(DCT)或者基于画面的转换)或者本文进一步讨论的任何其他配置,执行全局稳定、低开销转换编码。在一些示例中,为了本地最佳转换编码,可以执行参数哈尔转换(PHT),如本文进一步讨论的那样。在一些示例中,转换可以对约4x4像素与64x64像素之间的矩形尺寸的2D块执行,而实际的尺寸根据多个因子(诸如转换的数据是否是亮度或者色度、或者帧间或者帧内、或者使用的确定的转换是否是PHT或者DCT等)。
[0061] 如图所示,作为结果的转换系数可以传输至自适应量化模块109。自适应量化模块109可以将作为结果的转换系数量化。此外,根据需要,关联于参数转换的任何数据可以传输至自适应量化模块109(如果期望量化)或者自适应熵编码器模块110。另外如图1所示,量化的系数可以被扫描并传输至自适应熵编码器模块110。自适应熵编码器模块110可以将量化的系数熵编码,并将其包含在输出比特流111中。在一些示例中,自适应转换模块108和自适应量化模块109可以一起被视为编码器100的转换编码器子系统。
[0062] 另外如图1所示,编码器100包含本地解码循环。本地解码循环可以始于自适应逆量化模块112。自适应逆量化模块112可以被配置为执行自适应量化模块109的相反操作,使得可以执行逆扫描并且量化的系数可以去缩放(de-scaled)来确定转换系数。这样的自适应量化操作例如可能是有损的。如图所示,转换系数可以传输至自适应逆转换模块113。自适应逆转换模块113可以如通过自适应转换模块108执行的那样执行逆转换,例如来产生关联于编码分区的剩余或者剩余值或者分区预测误差数据(或者原始数据或者小波数据,如描述的那样)。在一些示例中,自适应逆量化模块112 和自适应逆转换模块113可以一起被视为编码器100的转换解码器子系统。
[0063] 如图所示,分区预测误差数据(等)可以传输至可选的编码分区组装器114。编码分区组装器114可以根据需要,将编码分区组装为解码的预测分区(如图所示,在一些示例中,编码分区组装器114可以经由开关114a 和114b被跳过,使得解码的预测分区可以在自适应逆转换模块113处产生),以产生预测误差数据的预测分区或者解码的剩余预测分区等。
[0064] 如图所示,解码的剩余预测分区可以在增加器115处增加至预测的分区 (例如预测像素数据),以产生重建的预测分区。重建的预测分区可以传输至预测分区组装器116。预测分区组装器116可以组装重建的预测分区以产生重建的图块或者超片段。在一些示例中,编码分区组装器模块114和预测分区组装器模块116可以一起被视为编码器100的去分区器 (un-partitioner)子系统。
[0065] 重建的图块或者超片段可以传输至块效应(blockiness)分析器和去块 (deblock)滤波模块117。块效应分析器和去块滤波模块117可以将重建的图块或者超片段(或者图块的预测分区或者超片段)去块并抖动。产生的去块和抖动滤波器参数可以用于当前滤波器操作和/或编码在输出比特流 111中,例如供解码器使用。块效应分析器和去块滤波模块117的输出可以传输至质量分析器和质量恢复滤波模块118。质量分析器和质量恢复滤波模块118可以确定QR滤波参数(例如对于QR分解),并使用确定的参数用来滤波。QR滤波参数还可以被编码在输出比特流111中供解码器使用。如图所示,质量分析器和质量恢复滤波模块118的输出可以传输至解码的画面缓冲器119。在一些示例中,质量分析器和质量恢复滤波模块118的输出可以是最终重建的帧,其可以用于针对编码其他帧的预测(例如最终重建的帧可以是参考帧等)。在一些示例中,块效应分析器和去块滤波模块117 以及质量分析器和质量恢复滤波模块118可以一起被视为编码器100的滤波子系统。
[0066] 在编码器100中,预测操作可以包含帧间和/或帧内预测。如图 1 所示,帧间预测可以由一个或多个模块执行,模块包含变形分析器和变形的画面产生模块120、合成分析器和产生模块121、以及特性和运动滤波预测器模块123。变形分析器和变形的画面产生模块120可以分析当前画面来确定针对于以下的参数:相对于其可能要编码的参考帧,增益中的改变、支配性运动中的改变、注册中的改变、以及模糊中的改变。确定的变形参数可以被量化/去量化并(例如由变形分析器和变形的画面产生模块120) 使用以产生变形的参考帧,其可以由运动估计器模块使用,用来计算对于当前帧的有效运动(和特性)补偿的预测的运动矢量。合成分析器和产生模块121可以对于运动产生超分辨率(SR)画面和投影的插值(PI)画面等,用于确定这些帧中的有效运动补偿的预测的运动矢量。
[0067] 运动估计器模块可以基于变形的参考帧和/或超分辨率(SR)画面和投影的插值(PI)画面以及当前帧,产生运动矢量数据。在一些示例中,运动估计器模块可以被视为帧间预测模块。例如,运动矢量数据可以用于帧间预测。如果应用了帧间预测,那么特性和运动补偿滤波预测器模块123可以应用运动补偿作为本地解码循环的部分,如讨论的那样。
[0068] 帧内预测可以由帧内方向预测分析器和预测产生模块124执行。帧内方向预测分析器和预测产生模块124可以被配置为执行空间方向预测,并可以使用解码的相邻分区。在一些示例中,方向的确定和预测的产生这两者可以由帧内方向预测分析器和预测产生模块124执行。在一些示例中,帧内方向预测分析器和预测产生模块124可以被视为帧内预测模块。
[0069] 如图1所示,预测模式和参考类型分析器模块125可以允许对于图块 (或者超片段)的每个预测分区,从“跳过”、“自动”、“帧间”、“拆分”、“多帧”、以及“帧内”之中选择预测模式,其全部可以应用到P-和F/B- 画面。除了预测模式外,还允许选择能够根据“帧间”或者“多帧”模式以及对于P-和F/B-画面而不同的参考类型。在预测模式和参考类型分析器模块125的输出处的预测信号可以由预测分析器和预测融合滤波模块126 滤波。预测分析器和预测融合滤波模块126可以确定参数(例如,滤波系数、频率、开销)供滤波使用,并可以执行滤波。在一些示例中,将预测信号滤波可以融合代表不同模式(例如帧内、帧间、多帧、拆分、跳过、以及自动)的不同类型的信号。在一些示例中,帧内预测信号可以不同于所有其他类型的帧间预测信号,使得适当的滤波可以大大增强编码效率。在一些示例中,滤波参数可以在输出比特流111中编码供解码器使用。滤波的预测信号可以将第二输入(例如预测分区)提供至差异确定器106,如上所述,其可以对于之前讨论的编码确定预测差异信号(例如分区预测误差)。此外,相同的滤波的预测信号可以将第二输入提供至增加器115,如上所述。如上所述,输出比特流111可以提供有效编码的比特流供解码器使用来呈现视频。
[0070] 图1示出关联于视频编码器100的操作的示例控制信号,其中下面的缩写可以代表相关联的信息:
[0071] scnchg      场景改变信息
[0072] spcpx       空间复杂性信息
[0073] tpcpx       时间复杂性信息
[0074] pdist       时间预测距离信息
[0075] pap         预分析参数(对于除了scnchg,spcpx,tpcpx,pdist外的所有其他预分析参数的占位符)
[0076] ptyp        画面类型信息
[0077] pgst        画面组构造信息
[0078] pptn cand.  预测分段候选
[0079] cptn cand.  编码分段候选
[0080] prp         预处理
[0081] xmtyp       转换类型信息
[0082] xmdir       转换方向信息
[0083] xmmod       转换模式
[0084] ethp        八分之一(1/8)像素运动预测
[0085] pptn        预测分段
[0086] cptn        编码分段
[0087] mot&cod cost 运动和编码成本
[0088] qs          量化器信息集(包含量化器参数(Qp)、量化器矩阵 (QM)选择)
[0089] mv          运动矢量
[0090] mop         变形参数
[0091] syp         合成参数
[0092] ddi         去块和抖动信息
[0093] qri         质量恢复滤波指数/信息
[0094] api         自适应精确滤波指数/信息
[0095] fii         融合滤波指数/信息
[0096] mod         模式信息
[0097] reftyp      参考类型信息
[0098] idir        帧内预测方向
[0099] 可能需要发送至解码器的各种信号和数据项目,即pgst,ptyp,prp, pptn,cptn,modes,reftype,ethp,xmtyp,xmdir,xmmod,idir, mv,qs,mop,syp,ddi,qri,api,fii,定量系数和其他的,然后可以由自适应熵编码器110进行熵编码,其可以包含共同被称为熵编码器子系统的不同的熵编码器。这些控制信号被示出为与图1中的编码器100 的特定示例功能模块相关联,但其他实施方式可以包含编码器300的功能模块中间的控制信号的不同分布。本公开不限于此,在各种示例中,本文中控制信号的实施方式可以包含示出的特定示例控制信号、附加的控制信号的仅子集任务,和/或不同于示出的布置。
[0100] 图2是跟据本公开的至少一些实施方式布置的示例下一代视频解码器 200的示意图。如图所示,解码器200可以接收输入比特流201。在一些示例中,输入比特流201可以经由编码器100和/或经由本文讨论的编码技术进行编码。如图所示,输入比特流201可以由自适应熵解码器模块202接收。自适应熵解码器模块202可以解码各种类型的编码的数据(例如开销、运动矢量、转换系数等)。在一些示例中,自适应熵解码器202可以使用可变长度解码技术。在一些示例中,自适应熵解码器202可以执行上述自适应熵编码器模块110的逆操作。
[0101] 解码的数据可以传输至自适应逆量化模块203。自适应逆量化模块203 可以被配置为将量化的系数逆扫描并去缩放,以确定转换系数。这样的自适应量化操作例如可能是有损的。在一些示例中,自适应逆量化模块203 可以被配置为执行自适应量化模块109的相反操作(例如,与自适应逆量化模块112实质上相同的操作)。如图所示,转换系数(在一些示例中,用于参数转换的转换数据)可以传输至自适应逆转换模块204。自适应逆转换模块204可以对转换系数执行逆转换,以产生关联于编码分区的剩余或者剩余值或者分区预测误差数据(或者原始数据或者小波数据)。在一些示例中,自适应逆转换模块204可以被配置为执行自适应转换模块108的相反操作(例如,与自适应逆转换模块113实质上相同的操作)。在一些示例中,自适应逆转换模块204可以基于其他之前解码的数据(诸如例如解码的相邻分区)来执行逆转换。在一些示例中,自适应逆量化模块203和自适应逆转换模块204可以一起被视为解码器200的转换解码器子系统。
[0102] 如图所示,剩余或者剩余值或者分区预测误差数据可以传输至编码分区组装器205。编码分区组装器205可以根据需要,将编码分区组装为解码的预测分区(如图所示,在一些示例中,编码分区组装器205可以经由开关205a和205b被跳过,使得解码的预测分区可以在自适应逆转换模块204 处产生)。预测误差数据的解码的预测分区(例如,预测分区剩余)可以在增加器206处被增加至预测的分区(例如预测像素数据),以产生重建的预测分区。重建的预测分区可以传输至预测分区组装器207。预测分区组装器 207可以组装重建的预测分区以产生重建的图块或者超片段。在一些示例中,编码分区组装器模块205和预测分区组装器模块207可以一起被视为解码器200的去分区器子系统。
[0103] 重建的图块或者超片段可以传输至去块滤波模块208。去块滤波模块 208可以将重建的图块或者超片段(或图块或者超片段的预测分区)去块并抖动。例如,产生的去块和抖动滤波器参数可以根据输入比特流201确定。去块滤波模块208的输出可以传输至质量恢复滤波模块209。质量恢复滤波模块209可以基于QR参数来应用质量滤波,该QR参数可以例如根据输入比特流201确定。如图2所示,质量恢复滤波模块209的输出可以传输至解码的画面缓冲器210。在一些示例中,质量恢复滤波模块209的输出可以是最终重建的帧,其可以用于编码其他帧的预测(例如最终重建的帧可以是参考帧等)。在一些示例中,去块滤波模块208和质量恢复滤波模块209 可以一起被视为解码器200的滤波子系统。
[0104] 如上所述,(由于预测操作的)补偿可以包含帧间和/或帧内预测补偿。如图所示,帧间预测补偿可以由一个或多个模块执行,模块包含变形产生模块211、合成产生模块212、以及特性和运动补偿滤波预测器模块213。变形产生模块211可以使用去量化的变形参数(例如,根据输入比特流201 确定)来产生变形的参考帧。合成产生模块212可以基于根据输入比特流 201确定的参数,产生超分辨率(SR)画面和投影的插值(PI)画面等。如果应用帧间预测,那么特性和运动补偿滤波预测器模块213可以基于输入比特流201中的接收的帧和运动矢量数据等,应用运动补偿。
[0105] 帧内预测补偿可以由帧内方向预测产生模块214执行。帧内方向预测产生模块214可以被配置为执行空间方向预测,并可以使用根据输入比特流201中的帧内预测数据的解码的相邻分区。
[0106] 如图2所示,预测模式选择器模块215可以基于输入比特流201中的模式选择数据,对于图块的每个预测分区从“跳过”、“自动”、“帧间”、“多帧”、以及“帧内”之中(其全部可以应用到P-和F/B-画面)确定预测模式选择。除了预测模式外,还允许选择能够根据“帧间”或者“多帧”模式以及对于P-和F/B-画面而不同的参考类型。在预测模式选择器模块215的输出处的预测信号可以由预测融合滤波模块216滤波。预测融合滤波模块 216可以基于经由输入比特流201确定的参数(例如滤波系数、频率、开销) 来执行滤波。在一些示例中,滤波预测信号可以融合代表不同模式(例如帧内、帧间、多帧、跳过、以及自动)的不同类型的信号。在一些示例中,帧内预测信号可以不同于所有其他类型的帧间预测信号,使得适当的滤波可以大大增强编码效率。滤波的预测信号可以将第二输入(例如预测分区) 提供至差异确定器206,如上所述。
[0107] 如上所述,质量恢复滤波模块209的输出可以是最终重建的帧。最终重建的帧可以传输至自适应画面重新组织器217,其可以基于输入比特流 201中的排序参数,根据需要来重新排序或者重新组织帧。重新排序的帧可以传输至内容后恢复器模块218。内容后恢复器模块218可以是可选的模块,配置为对解码视频的感知质量执行进一步改善。改善处理可以响应于输入比特流201中的质量改善参数而被执行,或者其可以作为独立操作而被执行。在一些示例中,内容后恢复器模块218可以应用参数来改善质量(诸如例如胶片颗粒噪声的估计、或者剩余块效应减小)(例如,甚至在相对于去块滤波模块208讨论的去块操作之后)。如图所示,解码器200可以提供显示视频219,其可以被配置为经由显示器设备(未示出)显示。
[0108] 图2示出关联于视频解码器200的操作的示例控制信号,其中指示的缩写可以代表与上面相对于图1讨论的类似的信息。虽然这些控制信号被示出为与图4中的解码器200的特定示例功能模块相关联,但其他实施方式可以包含编码器100的功能模块之中的控制信号的不同分布。本公开不限于此,并且在各种示例中,本文中控制信号的实施方式可以包含示出的特定示例控制信号、附加的控制信号的仅子集任务,和/或不同于示出的布置。
[0109] 虽然图1至2示出特定编码和解码模块,但跟据本公开还可以利用未绘出的各种其他编码模块或者部件。此外,本公开不限于其中布置了各种部件的,图1和2中示出的特定部件和/或方式。本文描述的系统的各种部件可以以软件、固件、和/或硬件和/或其任何组合实现。例如,编码器100 和/或解码器200的各种部件可以至少部分由计算片上系统(SoC)的硬件 (诸如可以在计算系统中发现的,诸如例如移动电话)提供。
[0110] 此外,可以认识到编码器100可以关联于内容提供商系统和/或由内容提供商系统提供,其包含例如视频内容服务器系统,并且输出比特流111 可以通过各种通信部件和/或系统(诸如图1和2未绘出收发器、天线、网络系统等)传输或运输至解码器(诸如例如解码器200)。还可以认识到解码器200可以关联于对于编码器100为远程的客户端系统,诸如计算设备 (例如桌面计算机、膝上型计算机、平板计算机、可转换膝上型计算机、移动电话等),并且经由各种通信部件和/或系统(诸如图1和2未绘出的收发器、天线、网络系统等)接收输入比特流201。因此,在各种实施方式中,编码器100和解码器子系统200可以一起或者彼此独立地实现。
[0111] 图3(a)是根据本公开的至少一些实施方式布置的示例下一代视频编码器300a的示意图。图3(a)呈现与图 1 示出的类似的编码器,为了简洁起见类似的元件将不会被重复。如图3(a)所示,编码器 300a可以包含预分析器子系统310a、分区器子系统320a、预测编码子系统 330a、转换编码器子系统340a、滤波编码子系统350a、熵编码器系统360a、转换解码器子系统370a、和/或去分区器子系统380a。预分析器子系统310a 可以包含内容预分析器模块102和/或自适应画面组织器模块104。分区器子系统320a可以包含预测分区产生器模块105和/或编码分区产生器107。预测编码子系统330a可以包含运动估计器模块、特性和运动补偿滤波预测器模块123、和/或帧内方向预测分析器和预测产生模块124。转换编码器子系统340a可以包含自适应转换模块108和/或自适应量化模块109。滤波编码子系统350a可以包含块效应分析器和去块滤波模块117、质量分析器和质量恢复滤波模块118、运动估计器模块、特性和运动补偿滤波预测器模块 123、和/或预测分析器和预测融合滤波模块126。熵编码子系统360a可以包含自适应熵编码器模块110。转换解码器子系统370a可以包含自适应逆量化模块112和/或自适应逆转换模块113。去分区器子系统380a可以包含编码分区组装器114和/或预测分区组装器116。
[0112] 编码器300a的分区器子系统320a可以包含2个分区子系统:预测分区产生器模块105可以对预测执行分析并分区,并且编码分区产生器模块107 可以对编码执行分析并分区。另一个分区方法可以包含自适应画面组织器 104,其可以将画面分割为区域或者片,其还可以可选地被认为是该分区器的部分。
[0113] 编码器300a的预测编码器子系统330a可以包含运动估计器;可以执行“帧间”信号的分析和预测的特性和运动补偿滤波预测器123;以及可以执行“帧内”信号的分析和预测的帧内方向预测分析器和预测产生模块124。运动估计器和特性和运动补偿滤波预测器123可以允许:通过对差异的其他源(诸如增益、全局运动、注册)的第一补偿(随后为实际运动补偿),来增加预测性。其还可以允许使用数据建模来创建可以允许更好预测的合成帧(超分辨率和投影),随后使用这样的帧中的实际的运动补偿。
[0114] 编码器300a的转换编码器子系统340a可以执行分析来选择转换的类型和尺寸,并可以包含2个主要类型的部件。第一类型的部件可以允许使用参数转换来允许小至中尺寸块的本地最佳转换编码;然而这样的编码可能会要求一些开销。第二类型的部件可以允许使用来自包含参数转换的少数转换的选择的通用/固定转换(诸如DCT、或者基于画面的转换)的全局稳定、低开销编码。对于本地自适应转换编码而言,可以使用PHT(参数哈尔转换)。转换可以对4x4和64x64之间的矩形尺寸的2D块执行,而实际的尺寸可以取决于多个因子(诸如转换的数据是否是亮度或者色度、帧间或者帧内、以及使用的转换是否是PHT或者DCT)。作为结果的转换系数可以被量化、扫描以及熵编码。
[0115] 编码器300a的熵编码器子系统360a可以包含多个有效但是低复杂性部件,每个部件的目标是将特定类型的数据(各种类型的开销、运动矢量、或者转换系数)有效地编码。该子系统的部件可以属于通用级别的低复杂性可变长度编码技术,然而,为了有效编码,每个部件可以为了最高效率被定制优化。例如,定制解决方案可以被设计用于:编码“编码的/未编码的”数据,还用于“模式和参考类型”数据,又用于“运动矢量”数据,又用于“预测和编码分区”数据。最终,因为要熵编码的数据的非常大一部分是“转换系数”数据,所以可以使用用于有效处理特定块尺寸的多个方法、以及可以在多个表间适应的算法
[0116] 编码器300a的滤波编码器子系统350a可以基于这些参数来执行重建画面的参数的分析以及多个滤波,并可以包含若干子系统。例如,第一子系统、块效应分析器和去块滤波模块117可以去块并抖动,以减小或遮掩 (mask)任何潜在的块编码效应(block coding artifact)。第二示例子系统、质量分析器和质量恢复滤波模块118可以执行一般质量恢复,以减小由于任何视频编码中的量化操作的效应。可以包含运动估计器和特性以及运动补偿滤波预测器模块123的第三示例子系统可以通过使用滤波器,改善来自运动补偿的结果,其适应内容的运动特性(运动速度/模糊程度)。第四示例子系统、预测融合分析器和滤波器产生模块126可以允许预测信号的自适应滤波(其可以减小预测中的经常来自帧内预测的虚假效应),因而减小需要被编码的预测误差。
[0117] 编码器300a的编码控制器模块103可以负责在给定的资源和期望的编码速度的约束下的总体视频质量。例如,在不使用任何捷径的基于全RDO (率失真优化)的编码中,软件编码的编码速度可以简单地是计算资源(处理器的速度、处理器的数量、超线程、DDR3存储器等)可用性的后果。在这样的情况下,编码控制器模块103可以输入预测分区和编码分区的每个单个组合并通过实际的编码,并且码率可以对于每个情况与重建误差一起被计算,并基于拉格朗日优化方程,最佳组预测和编码分区可以对于被编码的每个帧的每个图块而被发送。基于全RDO的模式可以导致最好的压缩效率,并还可以为最慢编码模式。通过使用来自内容预分析器模块102的内容分析参数,并使用其进行RDO简化(不测试所有可能的情况),或者仅通过全RDO传递某百分比的块,可以做出质量对速度折衷并允许更快的编码。迄今已描述了基于可变比特率(VBR)的编码器操作。编码控制器模块103还可以包含能够在恒定比特率(CBR)控制的编码情况下调用的率控制器。
[0118] 最后,编码器300a的预分析子系统310a可以执行内容的分析来计算各种类型的参数,该参数对于改善视频编码效率和速度性能是有用的。例如,其可以计算水平和垂直梯度信息(Rs、Cs)、方差、每画面的空间复杂性、每画面的时间复杂性、场景改变检测、运动范围估计、增益检测、预测距离估计、对象估计的数量、区域边界检测、空间复杂性映射计算、焦点估计、胶片颗粒估计等。由预分析器子系统310a产生的参数可以由编码器消耗,或者被量化并传达至解码器200。
[0119] 虽然子系统310a至380a被示出为与图3(a)中的编码器300a的特定示例功能模块相关联,本文的编码器300a的其他实施方式可以包含子系统 310a至380a之中的编码器300a的功能模块的不同分布。本公开不限于此,并且在各种示例中,本文的示例子系统310a至380a的实施方式可以包含示出的编码器300a的特定示例功能模块、附加的功能模块的仅子集任务,和 /或不同于示出的布置。
[0120] 图3(b)是根据本公开的至少一些实施方式布置的示例下一代视频解码器300b的示意图。图3(b)呈现与图2示出的类似的解码器,为了简洁起见类似的元件将不会被重复。如图3(b)所示,解码器300b可以包含预测解码器子系统330b、滤波解码器子系统350b、熵解码器子系统360b、转换解码器子系统370b、去分区器_2子系统380b、去分区器_1子系统
351b、滤波解码器子系统350b、和/或后恢复器子系统390b。预测解码器子系统 330b可以包含特性和运动补偿滤波预测器模块213和/或帧内方向预测产生模块214。滤波解码器子系统350b可以包含去块滤波模块208、质量恢复滤波模块209、特性和运动补偿滤波预测器模块、213和/或预测融合滤波模块216。熵解码器子系统360b可以包含自适应熵解码器模块
202。转换解码器子系统370b可以包含自适应逆量化模块203和/或自适应逆转换模块 204。
去分区器_2子系统380b可以包含编码分区组装器205。去分区器_1 子系统351b可以包含预测分区组装器207。后恢复器子系统790可以包含内容后恢复器模块218和/或自适应画面重新组织器217。
[0121] 解码器300b的熵解码子系统360b可以执行编码器300a的熵编码器子系统360a的逆操作,即,可以使用笼统被称为可变长度解码的级别的技术,将由熵编码器子系统360a编码的各种数据(多个类型的开销、运动矢量、转换系数)解码。具体而言,要解码的各种类型的数据可以包含“编码的/ 未编码的”数据、“模式和参考类型”数据、“运动矢量”数据、“预测和编码分区”数据、以及“转换系数”数据。
[0122] 解码器300b的转换解码器子系统370b可以执行编码器300a的转换编码器子系统340a的逆操作。转换解码器子系统370b可以包含2种类型的部件。第一类型的示例部件可以支持使用小至中块尺寸的参数逆PHT转换,而其他类型的示例部件可以对所有块尺寸支持逆DCT转换。用于块的PHT 转换可以取决于相邻块的解码的数据的分析。输出比特流111和/或输入比特流201可以携带以下信息:关于PHT转换的分区/块尺寸,以及在要逆转换的2D块哪个方向上PHT可以被使用的(其他方向使用DCT)。对于纯粹由DCT编码的块而言,分区/块尺寸信息也可以从输出比特流111和/或输入比特流201取回,并用于应用适当尺寸的逆DCT。
[0123] 解码器300b的去分区器子系统380b可以执行编码器300a的分区器子系统320a的逆操作并可以包含2个去分区子系统,编码分区组装器模块205 可以执行编码的数据的去分区,并且预测分区组装器模块207可以执行对预测的去分区。此外,如果在编码器300a处对于区域分割或者片使用可选的自适应画面组织器模块104,可能在解码器处会需要自适应画面重新组织器模块217。
[0124] 解码器300b的预测解码器子系统330b可以包含特性和运动补偿滤波预测器模块213,其可以执行“帧间”信号的预测;以及帧内方向预测产生模块214,其可以执行“帧内”信号的预测。特性和运动补偿滤波预测器模块213可以允许:通过对差异的其他源(诸如增益、全局运动、注册)的第一补偿来增加预测性或创建合成帧(超分辨率和投影)(随后为实际运动补偿)。
[0125] 解码器300b的滤波解码器子系统350b可以基于由编码器300a发送的参数,执行重建的画面的多个滤波,并可以包含若干子系统。第一示例子系统、去块滤波模块208可以去块并抖动,以减小或遮掩任何潜在的块编码效应。第二示例子系统、质量恢复滤波模块209可以执行一般质量恢复,以减小由于任何视频编码中的量化操作导致的效应。第三示例子系统、特性和运动补偿滤波预测器模块213可以通过使用滤波器,改善来自运动补偿的结果,其可以适应内容的运动特性(运动速度/模糊程度)。第四示例子系统、预测融合滤波模块216可以允许预测信号的自适应滤波(其可以减小预测中的经常来自帧内预测的虚假效应),因而减小可能需要被编码的预测误差。
[0126] 解码器300b的后恢复器子系统390b是可选的块,其可对解码视频的感知质量执行进一步改善。该处理能够响应于由编码器100发送的质量改善参数完成,或者其可以是在后恢复器子系统390b处做出的独立决定。针对在编码器100处计算的、能够被用于在后恢复器子系统390b处改善质量的特定参数方面,可以是在编码器100处(甚至在去块后)的胶片颗粒噪声和剩余块效应的估计。至于胶片颗粒噪声,如果参数能够经由输出比特流111和/或输入比特流201计算并发送至解码器200,那么这些参数可以被用于合成胶片颗粒噪声。同样,对于在编码器100处的任何剩余块效应,如果其能够被测量并且参数经由输出比特流111和/或比特流201被发送,那么后恢复器子系统390b可以解码这些参数并可以使用其来在显示之前可选地执行附加的去块。此外,编码器100还可以访问场景改变、空间复杂性、时间复杂性、运动范围、以及预测距离信息,其可以帮助后恢复器子系统390b中的质量恢复。
[0127] 虽然子系统330b至390b被示出为与图3(b)中的解码器300b的特定示例功能模块相关联,本文的解码器300b的其他实施方式可以包含子系统 330b至390b之中的解码器300b的功能模块的不同分布。本公开不限于此,在各种示例中,本文的示例子系统330b至
390b的实施方式可以包含示出的解码器300b的特定示例功能模块、附加的功能模块的仅子集任务,和/ 或不同于示出的布置。
[0128] 图4是根据本公开的至少一些实施方式布置的示例熵编码器模块110 的示意图。如图所示,熵编码器模块110可以包含比特流头部;参数和映射数据编码器模块401;画面分区、预测分区、以及编码分区编码器模块 402;编码模式和参考类型编码器模块403;编码的/未编码的数据编码器模块404;转换系数编码器模块405;运动矢量预测和差分运动矢量编码器模块406;帧内预测类型和方向数据编码器块407;和/或比特流组装器模块 408。在本文的讨论中,为了简洁起见,每个模块401-407可以简记为编码器模块401、编码器模块
404等。
[0129] 如图所示,编码器模块401-407可以分别经由自适应熵编码器110接收视频数据411-417。在一些示例中,接收的视频数据411-417可以从本文讨论的编码器100的各种模块接收。如图所示,编码器模块401-407可以压缩接收的视频数据411-417以产生压缩的视频数据421-427。压缩的视频数据 421-427可以被提供给比特流组装器408,其可以将压缩的视频数据421-427 组装来产生输出比特流111。
[0130] 在一些示例中,编码器模块401-407可以每个都包含一个或多个专的部件,用于将关联于接收的视频数据411-417的类型的数据有效地编码。在一些示例中,一个或多个编码器模块401-407可以基于接收的视频数据 411-417的参数或者特性或其他系统信息,预处理接收的视频数据411-417 和/或选择熵编码技术。
[0131] 例如,编码器模块401可以接收开销数据411,其可以包含比特流头部数据(例如序列和/或画面水平比特流头部)、变形参数、合成参数、或者全局映射数据(例如,画面的量化器映射,表明在分区基础上使用的量化器)。如下文进一步相对于图6讨论的那样,在一些示例中,编码器模块401可以实现自适应符号运行可变长度编码技术、自适应代理可变长度编码技术、或者视频数据411的可变长度编码表压缩。在一些示例中,编码器模块411 可以确定哪个技术提供最大压缩效率(例如,压缩的视频数据421的最少位),使得关联于视频数据411的参数可以是每个编码技术等需要的位数。编码器模块411可以将视频数据411熵编码以产生压缩的视频数据421(例如,压缩的开销数据),其可以传输至比特流组装器408,如图所示。
[0132] 如上所述,在一些示例中,关联于视频数据(例如,任何视频数据 411-417)的参数可以是可达比特的最小数、最有效编码技术等。在其他示例中,关联于视频数据的参数可以是预定义或者预定的参数,使得编码技术是预定的。在一些示例中,关联于视频数据的参数可以基于视频数据的特性,使得确定的编码技术可以适应接收的视频数据,如本文进一步讨论的那样。
[0133] 如图所示,在一些示例中,编码器模块402可以接收分区数据412,其可以包含画面片或者区域数据、帧内预测分区数据、和/或帧间预测分区以及编码分区数据。如下文进一步相对于图6讨论的那样,在一些示例中,编码器模块412可以实现自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术,用于基于关联于帧内预测分区数据和/或帧间预测分区数据的参数(例如,视频数据412的可达比特的最小数、最有效编码技术、预定参数、特性等),压缩视频数据412的帧内预测分区数据和/或帧间预测分区数据部分;并且编码器模块412可以对于视频数据412的片或者区域数据部分实现自适应码书可变长度编码,以产生可以传输至比特流组装器408的压缩的视频数据422(例如压缩的分区数据),如图所示。在一些示例中,帧内预测分区数据和/或帧间预测分区数据可以包含表明对以下分区动作的数据:图块到分区、分区到子分区等。在一些示例中,分区和/ 或子分区可以包含预测分区和/或子分区。在一些示例中,分区和/或子分区可以包含编码分区和/或子分区。
[0134] 此外如图所示,在一些示例中,编码器模块403可以接收模式和参考类型数据413,其可以包含每个预测分区的模式(例如帧内、拆分、跳过、自动、帧间、或者多帧)数据和/或参考数据。例如,模式拆分信息可以表明分区是否被进一步分割。如果进一步分割了分区,那么模式数据还可以包含表明拆分是水平拆分(例如hor)还是垂直拆分(例如vert)的方向信息。如下文进一步相对于图6讨论的那样,在一些示例中,编码器模块403 可以实现自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术,用于拆分的/非拆分的分区信息数据的分开编码,拆分的/非拆分的拆分信息数据的分开编码,或者基于关联于数据的参数(例如视频数据413 的可达比特的最小数、最有效编码技术、预定参数、相关部分的特性等) 的预测参考信息数据;并且编码器模块403可以实现自适应可变长度编码,用于模式和拆分信息的联合编码,以产生可以传输至比特流组装器408的压缩的视频数据423(例如压缩的模式和参考类型数据),如图所示。
[0135] 此外,在一些示例中,编码器模块404可以接收编码的/未编码的数据 414,其可以包含本文描述的编码的/未编码的数据。例如,如果分区(或者子分区)具有任何非零转换系数,则其可以被编码;如果分区(或者子分区)具有全部零转换系数,则其不可被编码。在一些示例中,对于具有帧内或者跳过模式的分区,可能不需要编码的/未编码的数据。在一些示例中,对于具有自动、帧间、或者多帧模式的分区,可能需要编码的/未编码的数据。如下文进一步相对于图6描述的那样,在一些示例中,编码器模块404 可以基于关联于编码的/未编码的数据的参数(例如视频数据414的可达比特的最小数、最有效编码技术、预定参数、特性等),对于编码的/未编码的数据实现自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术,以产生可以传输至比特流组装器408的压缩的视频数据424(例如压缩的编码的/未编码的数据),如图所示。
[0136] 在一些示例中,编码器模块405可以接收转换数据415,其可以包含转换系数数据。例如,对于编码的块或者分区或者子分区(例如具有一个或多个非零转换系数),转换系数数据可以被接收用来熵编码。如进一步相对于图6讨论的那样,编码器模块405可以对于在一个维度具有为2的块或者分区或者子分区尺寸(例如,2xK分区或者Kx2尺寸的分区)的块或者分区或者子分区,实现自适应矢量可变长度编码。此外,编码器模块405 可以对于尺寸
4x4的块或者分区或者子分区实现自适应1维可变长度编码,并对于所有其他块或者分区或者子分区尺寸(例如4x8、8x4、8x8、16x16、 32x32、64x64等)实现自适应2维可变长度编码。
产生的压缩的视频数据 425(例如压缩的转换数据)可以被传输至比特流组装器408,如图所示。
[0137] 例如,转换系数数据可以起因于经由自适应转换模块108实现的、像素数据的矩形(或者方形等)分区或者像素差异值的矩形(或者方形等) 的正变换,随后是经由自适应量化模块109的、得到的系数的量化。在一些示例中,可以扫描转换系数数据来将其经由编码器模块405转换至1维频率排序的分区。这样的转换可以是高度自适应的任何分区尺寸(例如24 或以上、或者32或以上的分区尺寸)、不同数据类型(例如帧内或者帧间分区的离散余弦转换系数、或者混合参数哈尔转换系数等)、和/或不同的量化器设定特性(例如量化器参数和/或矩阵的各种组合)。此外,块或者分区或者子分区可以属于不同画面类型:I-画面(例如仅帧内补偿)、P-画面(例如预测)或者F-画面(例如功能);和/或可以代表不同类型的信号或者数据(例如亮度或者色度等),其可以用不同量化器设定来量化。
[0138] 此外,在一些示例中,编码器模块406可以接收运动数据416,其可以包含运动矢量数据。如相对于图6进一步讨论的那样,运动矢量预测可以基于视频数据416被执行,以产生一个或多个预测的运动矢量。预测的运动矢量可以与视频数据416的原始的运动数据确定差异,以产生差异运动矢量。在一些示例中,编码器模块416可以对于差异运动矢量实现自适应分类的可变长度编码,以产生可以传输至比特流组装器408的压缩的视频数据426(例如压缩的运动数据),如图所示。
[0139] 此外,在一些示例中,编码器模块407可以接收帧内预测数据417,其可以包含帧内预测类型或者帧内预测方向数据。例如,如讨论的那样,帧内编码可以使用预测,其可以使用相同帧内相邻的过去解码的分区,以产生空间预测。在这样的示例中,可能有预测器用于表明过去解码的分区。例如,预测器可以包含dc、倾斜、方向、BTPC、特征匹配等。此外,在一些示例中,方向预测器可以对不同分区尺寸自适应。例如,指明方向预测器可以包含提供用于确定使用因果相邻解码的分区来编码的预测像素分区的技术、和/或指明将空间预测方向熵编码的技术。在一些示例中,这样的技术可以经由编码器模块407执行。如下文进一步相对于图6讨论的那样,在一些示例中,编码器模块407可以基于关联于帧内预测类型或者帧内预测方向数据的参数(例如视频数据417的可达比特的最小数、最有效编码技术、预定参数、特性等),对帧内预测类型或者帧内预测方向数据实现自适应可变长度编码技术或者算术编码技术,以产生可以传输至比特流组装器408的压缩的视频数据427(例如压缩的帧内预测数据),如图所示。
[0140] 如图4所示,自适应熵编码器110可以包含比特流组装器408。在一些示例中,在时间中一些或者所有的编码器模块401-407可以在不同实例处提供熵编码的压缩的视频数据421-427。此外,在一些示例中,一个或者一些压缩的视频数据421-427可以基于画面,基于区域或者片,基于图块,基于预测分区,基于编码分区,或者其任何组合。在一些示例中,比特流组装器可以将(潜在不同的)压缩的视频数据421-427复用,以创建有效比特流 (诸如例如输出比特流111)。例如,有效比特流可以是有效的下一代视频 (NGV)编码的比特流,其可以遵循NGV比特流语法规范。在一些示例中,输出比特流111可以是仅视频比特流。在一些示例中,输出比特流111可以用未编码的或编码的音频进行复用(例如,传输或者媒体文件格式),以创建复用的音频视频流。在任何情况下,比特流可以被用于本地解码、存储、或者传输至解码器,如本文讨论的那样。
[0141] 图5是根据本公开的至少一些实施方式布置的示例熵解码器模块202 的示意图。如图所示,熵解码器模块202可以包含比特流头部;参数和映射数据解码器模块501;画面分区、预测分区、以及编码分区解码器模块 502;编码模式和参考类型解码器模块503;编码的/未编码的数据解码器模块504;转换系数解码器模块505;运动矢量和差分运动矢量解码器模块506;帧内预测和方向数据解码器模块507;和/或比特流分解器模块508。在本文的讨论中,为了简洁起见,每个模块501-507可以简记为解码器模块501、解码器模块505等。
[0142] 如图所示,比特流分解器模块508可以接收输入比特流201。在一些示例中,输入比特流201可以是有效比特流(诸如例如有效下一代视频(NGV) 编码的比特流)其可以遵循NGV比特流语法规范。在一些示例中,输入比特流201可以是仅视频比特流。在一些示例中,输入比特流201可以是复用的音频视频流,如本文描述的那样。比特流分解器模块508可以分解输入比特流201,以确定压缩的视频数据511-517,如图所示。例如,比特流分解器模块508可以使用预定义的语法或者规范来将输入比特流201根据数据类型分割为部件压缩的视频数据511-517,用于经由解码器模块501-507 进行解压缩。在一些示例中,比特流分解器模块508可以执行相对于比特流组装器模块508的逆操作。
[0143] 如图5所示,解码器模块501-507可以分别接收压缩的视频数据 511-517,并产生视频数据521-527。视频数据521-527可以被传输至解码器 200的各种部件,用于进一步解码,如本文描述的那样。解码器200因而可以产生视频帧以经由显示器设备(未示出)呈现给用户。在一些示例中,解码器模块501-507每个可以执行相对于编码器模块401-407的逆操作。在一些示例中,解码器模块501-507每个可以包含一个或多个专门部件,用于将关联于压缩的视频数据511-517的类型的数据有效地熵解码。
[0144] 例如,编码器模块501可以接收压缩的开销数据511,其可以包含压缩的比特流头部数据(例如序列和/或画面水平比特流头部)、变形参数、合成参数、或者全局映射数据(例如,画面的量化器映射,表明在分区基础上使用的量化器)。在一些示例中,解码器模块511可以对于压缩的开销数据 511的解压缩实现自适应符号运行可变长度编码技术、自适应代理可变长度编码技术、或者可变长度编码表,以产生开销数据521。在一些示例中,解码器模块501可以基于经由比特流201提供的参数或者指示符,确定实现哪个编码技术。
[0145] 如图所示,在一些示例中,解码器模块502可以接收压缩的分区数据 512,其可以包含压缩的画面片或者区域数据、帧内预测分区数据和/或帧间预测分区数据。在一些示例中,解码器模块512可以对于压缩的分区数据 512的帧内预测分区数据和/或帧间预测分区数据部分的解压缩,实现自适应符号运行可变长度编码技术、或者自适应代理可变长度编码技术;并且解码器模块512可以对于压缩的分区数据512的片或者区域数据部分的解压缩实现自适应码书可变长度编码,以产生分区数据522。在一些示例中,帧内预测分区数据和/或帧间预测分区数据可以包含表明对以下分区动作的数据:图块到分区、分区到子分区等。在一些示例中,分区和/或子分区可以包含预测分区和/或子分区。在一些示例中,分区和/或子分区可以包含编码分区和/或子分区。在一些示例中,解码器模块502可以基于经由比特流 201提供的参数或者指示符,确定对于压缩的视频数据512的帧内预测分区数据和/或帧间预测分区数据部分的解压缩实现哪个编码技术。
[0146] 此外,在一些示例中,解码器模块503可以接收压缩的模式和参考类型数据513,其可以包含对每个预测分区的压缩的模式(例如帧内、拆分、跳过、自动、帧间、或者多帧)数据和/或参考数据。例如,模式拆分信息可以表明分区是否被进一步分割。如果进一步分割了分区,那么模式数据还可以包含表明拆分是水平拆分(例如hor)还是垂直拆分(例如vert)的方向信息。在一些示例中,解码器模块503可以对于拆分的/非拆分的分区信息数据的分开编码的解压缩、拆分的/非拆分的拆分信息数据的分开的编码、或者预测参考信息数据,实现自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术;并且解码器模块503可以对于模式和拆分信息的联合编码的解压缩实现自适应可变长度编码,以产生模式和参考类型数据523。在一些示例中,解码器模块503可以基于经由比特流201提供的参数或者指示符,确定对拆分的/非拆分的分区信息数据的分开编码的解压缩,拆分的/非拆分的拆分信息数据的分开编码的解压缩,或者预测参考信息数据实现哪个编码技术。
[0147] 此外,在一些示例中,解码器模块504可以接收压缩的编码的/未编码的数据514,其可以包含本文描述的编码的/未编码的数据。例如,如果分区(或者子分区)具有任何非零转换系数,那么其可以被编码;如果分区 (或者子分区)具有全部零转换系数,那么其不可被编码。在一些示例中,对于具有帧内或者跳过模式的分区,可能不需要编码的/未编码的数据。在一些示例中,对于具有自动、帧间、或者多帧模式的分区,可能需要编码的/未编码的数据。在一些示例中,解码器模块504可以对编码的/未编码的数据的解压缩实现自适应符号运行可变长度编码技术、或者自适应代理可变长度编码技术,以产生编码的/未编码的数据524。在一些示例中,解码器模块504可以基于经由比特流201提供的参数或者指示符,确定对解压缩实现哪个编码技术。
[0148] 如图所示,在一些示例中,解码器模块505可以接收压缩的转换数据 515,其可以包含转换系数数据。例如,对于编码的块或者分区或者子分区 (例如具有一个或多个非零转换系数),压缩的转换数据515可以包含转换系数数据。在一些示例中,解码器模块505可以对于在一个维度具有为2 的块或者分区或者子分区尺寸(例如,2xK分区或者Kx2尺寸的分区)的块或者分区或者子分区的解压缩,实现自适应矢量可变长度编码。此外,解码器模块505可以对于尺寸4x4的块或者分区或者子分区的解压缩实现自适应1维可变长度编码,并对于所有其他块或者分区或者子分区尺寸(例如4x8、8x4、8x8、16x16、32x32、64x64等)的解压缩实现自适应2维可变长度编码。产生的转换数据525可以被传输至解码器200的其他模块,如图所示。
[0149] 此外,在一些示例中,解码器模块506可以接收压缩的运动数据516,其可以包含运动矢量数据。如下文进一步相对于图6讨论的那样,在一些示例中,压缩的运动数据516可以使用自适应分类的可变长度编码技术来解压缩,以产生预测的差异运动矢量。预测的差异运动矢量可以被增加至运动矢量预测,以产生重建的运动矢量。运动矢量预测可以使用经由编码器模块506例如和/或运动矢量实现的技术的逆,基于相邻块或者分区的之前解码的运动矢量来产生。重建的运动矢量可以经由运动数据526被传输至解码器200的其他模块,如图所示。
[0150] 此外,在一些示例中,解码器模块507可以接收压缩的帧内预测数据 517,其可以包含帧内预测类型或者帧内预测方向数据。例如,如描述的那样,帧内编码可以使用预测,其可以使用相同帧内相邻的过去解码的分区,以产生空间预测。在这样的示例中,可能有预测器用于表明过去解码的分区。例如,预测器可以包含dc、倾斜、方向、BTPC、特征匹配等。此外,在一些示例中,方向预测器可以对不同分区尺寸自适应。例如,指明方向预测器可以包含提供用于确定使用因果相邻解码的分区来编码的角预测像素分区的技术、和/或指明将空间预测方向熵编码的技术。在一些示例中,解码器模块517可以对于帧内预测类型或者帧内预测方向数据的解压缩实现自适应可变长度编码技术或者算术编码技术,以产生帧内预测数据527。在一些示例中,解码器模块507可以基于经由比特流201提供的参数或者指示符,确定对解压缩实现哪个编码技术。
[0151] 如上所述,各种熵编码技术可以实现在各种数据类型上,用于视频数据的无损压缩以在熵编码器处产生压缩的视频数据;并用于压缩的视频数据的解压缩以在熵解码器处产生重复视频数据。
[0152] 在一些示例中,自适应符号运行可变长度编码技术可以被实现。例如,编码器和解码器模块401、501、402、502、403、503、和/或404、504可以在接收的一些或者所有的视频数据或者压缩的视频数据上实现自适应符号运行可变长度编码技术。
[0153] 在一些示例中,自适应符号运行可变长度编码技术可以包含允许人确定连续跳过块的数量的视频编码中的帧内的非跳过块之间的地址中的相对差异的编码。例如,在经由编码器和解码器模块504、504编码并解码的编码的/未编码的数据的背景下,不是对每个块发送1比特(例如位图)来标志编码的/未编码的(例如跳过的)块,编码器模块504例如可以对跳过的块的运行进行编码。在这样的实施方式中,跳过的块的运行越长,数据可以越有效地被压缩。
[0154] 此外,若干类型的适应性可以被增加至自适应符号运行可变长度编码技术,如本文描述的那样:可以允许使用多个表的适应性,可以允许使用在原始的位图数据、逆位图(inverted bitmap)、差分位图、或者梯度预测位图等上执行这种类型的编码的适应性。例如,自适应符号运行可变长度编码技术可以包含在应用自适应符号运行可变长度编码之前,将第一视频数据从位图数据转换至逆位图、差分位图、或者梯度预测位图中的至少一个。例如,自适应符号运行可变长度编码技术可以被用于实质上将任何类型的事件(例如符号/运行组合)熵编码。此外,符号/运行事件可以被用于将多级(例如0,1,2,3等)或者二进制(例如0,1)事件编码。在编码了多级事件的示例中,自适应符号运行可变长度编码技术可以被应用连续多次,将多级映射打碎为多个二进制子映射,每个之前的子映射从下级的子映射等排除。
[0155] 在一些示例中,可以实现自适应代理可变长度编码技术。例如,编码器和解码器模块401、501、402、502、403、503、和/或404、504可以在接收的一些或者所有的视频数据或者压缩的视频数据上实现自适应代理可变长度编码技术。
[0156] 在一些示例中,自适应代理可变长度编码技术可以包含用可变长度代码(例如比特的序列的模式)来替换比特的原始的固定长度ID块(例如群组),使得在更换之后得到的比特流的尺寸可以变小。在一些示例中,在解码器处,可以重复(或者逆)处理,导致原始的预期的比特流。在一些示例中,更换的比特的原始块可以是固定的小尺寸(例如2比特的群组、3比特的群组、或者4比特的群组等)。在一些示例中,更换代码在本质上可以是小尺寸且可变长度。在一些示例中,本文讨论的自适应代理可变长度编码可以被表征为短VLC(例如可变长度代码)。此外,本文描述的自适应代理可变长度编码技术可以通过提供多个更换选项来适应内容。在一些示例中,2比特的1维块/群组可以被更换为1-3比特长代码。在一些示例中,具有代码的3比特的1维块/群组(或者块/群组的集合)可以被更换为1-5比特长代码。在一些示例中,自适应代理可变长度编码技术可以开发比特流内的统计冗余。在一些示例中,自适应代理可变长度编码技术可以提供约 1-1.3倍的压缩增益。在一些示例中,自适应代理可变长度编码技术可以提供的优点是接受应用至比特的短序列。
[0157] 在一些示例中,可以实现自适应符号块可变长度编码技术。例如,编码器和解码器模块405、505可以在接收的一些或者所有的视频数据或者压缩的视频数据上实现自适应符号块可变长度编码技术。
[0158] 在一些示例中,自适应符号块可变长度编码技术可以包含2个子编码技术,如将进一步相对于图7讨论的那样。例如,自适应符号块可变长度编码技术的可以包含自适应矢量可变长度编码技术和自适应1D/2D(1维/2 维)可变长度编码技术。在一些示例中,自适应符号块可变长度编码技术可以被用于编码密切相关符号的块(诸如本文讨论的转换系数的块)。
[0159] 在一些示例中,自适应符号块可变长度编码技术的自适应矢量可变长度编码技术可以通过使用联合单个码字,对相对小的2D块或者符号的分区进行编码,使得将符号块编码可以导致VLC(可变长度编码)码书。在一些示例中,块或者分区的尺寸越大,码书的尺寸就越大。在一些示例中,自适应矢量可变长度编码技术可以被应用到在一个维度具有尺寸为2(例如 2xK或者Kx2块或者分区)的块或者分区尺寸。通过将自适应矢量可变长度编码技术应用至这样的尺寸的块或者分区,VLC码书的尺寸可以有利地受限。
[0160] 在一些示例中,自适应符号块可变长度编码技术的自适应1D可变长度编码技术可以用于对4x4转换系数块或者分区尺寸进行编码,与CAVLC编码器基本相同。该编码器主要用于编码4x4。在一些示例中,自适应1D可变长度编码技术可以经由内容自适应可变长度编码技术被实现,带有基于系数被编码的背景使用的多个不同的VLC表。例如,基于系数被编码的背景,编码器和/或解码器模块505、505可以切换VLC表。
[0161] 在一些示例中,自适应符号块可变长度编码技术的自适应2D可变长度编码技术可以利用符号块的二维性质来基于在多个不同的VCL表之间的背景切换。在一些示例中,自适应2D可变长度编码技术可以被表征为 CA2DVLC(内容自适应2D可变长度)编码器。在一些示例中,在一些示例中,自适应2D可变长度编码技术,除了2xK,Kx2块和4x4块外,还可以被用于编码的所有剩余的转换系数块或者分区尺寸(例如4x8、8x4、8x8、 16x16、32x32、64x64等)。
[0162] 图6是依据本公开的至少一些实施方式布置的示例熵编码器模块110 的示意图。如上相对于图4所示并所述的,熵编码器模块110可以包含比特流头部、参数和映射数据编码器模块401;画面分区、预测分区、以及编码分区编码器模块402;编码模式和参考类型编码器模块403;编码的/未编码的数据编码器模块404;转换系数编码器模块405;运动矢量和差分运动矢量编码器模块406;帧内预测和方向数据编码器模块407;和/或比特流组装器模块408。
[0163] 如图所示,编码器模块401可以包含用于比特流头部、参数、以及映射数据的自适应VLC、符号运行VLC、和/或代理VLC编码器模块611,并且可以接收视频数据411。视频数据411可以具有数据类型,使得视频数据411可以包含比特流头部数据(例如序列和/或画面水平比特流头部)、变形参数、合成参数、和/或全局映射数据(例如,表明量化器以分区为基础来被使用的画面的量化器映射)。在一些示例中,可以基于视频数据411的参数或者特性或其他系统参数,对视频数据411确定熵编码技术。在一些示例中,用于视频数据411的熵编码技术可以是自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术(如上所述)或者可变长度编码表或者表压缩技术中的一个。确定的熵编码技术可以被应用到视频数据 411来产生压缩的视频数据421。可变长度编码表压缩技术可以包含内容自适应可变长度编码技术,例如带有可用于基于视频数据411编码的一个或多个表。在一些示例中,编码器模块404可以确定哪个技术提供最大压缩效率(例如,对于压缩的视频数据421的最少比特),使得关联于视频数据 411的参数可以是每个编码技术等需要的比特数。在一些示例中,关联于视频数据411的参数可以基于视频数据411的特性,使得确定的编码技术可以适应接收的视频数据。
[0164] 如图6所示,编码器模块402可以包含用于画面分区模块621的自适应码书VLC编码器;用于帧内预测分区模块622的符号运行VLC和/或代理VLC编码器;和/或用于帧间预测分区和编码分区的符号运行VLC和/ 或代理VLC编码器模块623。另外如图所示,编码器模块402可以接收视频数据412。在一些示例中,视频数据412可以包含画面片或者区域数据 
624、帧内预测分区数据625、和/或帧间预测和编码分区数据626。
[0165] 如图所示,画面片或者区域数据624可以经由画面分区的自适应码书 VLC编码器模块621来接收,其可以将自适应码书可变长度编码应用至画面片或者区域数据624以产生压缩的画面片或者区域数据627。在一些示例中,画面片或者区域数据624可以包含用于画面、片、区域等的区域边界。在一些示例中,自适应码书可变长度编码可以包含使用适应画面片或者区域数据624的内容或者其他系统参数等的码书的内容自适应可变长度编码。
[0166] 如图所示,帧内预测分区数据625可以经由帧内预测分区的符号运行 VLC和/或代理VLC编码器模块622来接收。在一些示例中,可以基于帧内预测分区数据625的参数或者特性或其他系统参数(例如压缩效率、数据的特性等),确定对于帧内预测分区数据625的熵编码技术,如本文描述的那样。确定的熵编码技术可以被应用到帧内预测分区数据625,以产生压缩的帧内预测分区数据628。如图所示,在一些示例中,用于帧内预测分区数据625的熵编码技术可以是自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术中的一个,如上所述。在一些示例中,帧内预测分区数据625可以包含基于bi-tree分段或者k-d树分段等的分区。
[0167] 如图所示,帧间预测和编码分区数据626可以经由帧间预测分区和编码分区的符号运行VLC和/或代理VLC编码器模块623来接收。在一些示例中,可以基于帧间预测和编码分区数据626的参数或者特性或其他系统参数(例如压缩效率、数据的特性等),确定对于帧间预测和编码分区数据 626的熵编码技术,如本文描述的那样。确定的熵编码技术可以被应用到帧间预测和编码分区数据626,以产生压缩的帧间预测和编码分区数据629。如图所示,在一些示例中,用于帧间预测和编码分区数据626的熵编码技术可以是自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术中的一个,如上所述。在一些示例中,帧间预测和编码分区数据426 可以包含帧间分区和编码树分区等。
[0168] 如图6所示,编码器模块403可以包含用于联合模式和拆分的自适应 VLC编码器模块631;用于模式的符号运行VLC和/或代理VLC编码器模块632;用于拆分的符号运行VLC和/或代理VLC编码器模块633;和/或用于参考类型的符号运行VLC和/或代理VLC编码器模块634。另外如图所示,编码器模块403可以接收视频数据412。在一些示例中,视频数据 412可以是模式和拆分数据的联合编码635、模式信息数据636、拆分的/未拆分的信息数据637、和/或预测参考信息数据638。
[0169] 如图所示,模式和拆分数据的联合编码635可以经由用于联合模式和拆分的自适应VLC编码器模块631来接收,其可以将自适应可变长度编码应用至模式和拆分数据的联合编码635,以产生模式和拆分数据639的压缩的联合编码。在一些示例中,自适应可变长度编码可以包含适应以下内容的内容自适应可变长度编码:模式和拆分数据635或者其他系统参数等的联合编码。
[0170] 如上所述,在一些示例中,模式和拆分数据可以经由用于联合模式和拆分的自适应VLC编码器模块631来联合编码。在一些示例中,模式和拆分数据可以经由用于模式的符号运行VLC和/或代理VLC编码器模块632、以及用于拆分的符号运行VLC和/或代理VLC编码器模块633来分开编码,如下所述。在一些示例中,基于编码技术的比较的结果,来(例如经由自适应熵编码器110和/或编码控制器103)联合或者分开编码的编码器100 确定哪个技术压缩数据最有效。
[0171] 如图所示,模式信息数据636可以经由用于模式的符号运行VLC和/ 或代理VLC编码器模块632来接收。在一些示例中,可以基于模式信息数据636的参数或者特性或其他系统参数(例如压缩效率、数据的特性等),确定对于模式信息数据636的熵编码技术,如本文讨论的那样。确定的熵编码技术可以应用到模式信息数据636来产生压缩的模式信息数据642。如图所示,在一些示例中,用于模式信息数据636的熵编码技术可以是自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术中的一个,如上所述。
[0172] 如图所示,拆分的/未拆分的信息数据637可以经由用于拆分的符号运行VLC和/或代理VLC编码器模块633来接收。在一些示例中,可以基于拆分的/未拆分的信息数据637的参数或者特性或其他系统参数(例如压缩效率、数据的特性等),确定对于拆分的/未拆分的信息数据637的熵编码技术,如本文讨论的那样。确定的熵编码技术可以被应用到拆分的/未拆分的信息数据637来产生压缩的拆分的/未拆分的信息数据643。如图所示,在一些示例中,用于拆分的/未拆分的信息数据637的熵编码技术可以是自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术中的一个,如上所述。
[0173] 如图所示,预测参考信息数据638可以经由用于参考类型的符号运行 VLC和/或代理VLC编码器模块634来接收。在一些示例中,可以基于预测参考信息数据638的参数或者特性或其他系统参数(例如压缩效率、数据的特性等),确定对于预测参考信息数据638的熵编码技术,如本文讨论的那样。确定的熵编码技术可以被应用到预测参考信息数据638来产生压缩的预测参考信息数据644。如图所示,在一些示例中,用于预测参考信息数据638的熵编码技术可以是自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术中的一个,如上所述。
[0174] 如图所示,编码器模块404可以包含用于编码的/未编码的数据的符号运行VLC和/或代理VLC编码器641,并可以接收视频数据414。视频数据 414可以具有数据类型,使得视频数据411可以是编码的/未编码的数据。例如,如果分区(或者子分区)具有任何非零转换系数,那么其可以被编码;如果分区(或者子分区)具有全部零转换系数,那么其不可被编码。在一些示例中,对于具有帧内或者跳过模式的分区,可能不需要编码的/未编码的数据。在一些示例中,对于具有自动、帧间、或者多帧模式的分区,可能需要编码的/未编码的数据。在一些示例中,可以基于视频数据414的参数或者特性或其他系统参数,确定对于视频数据414的熵编码技术。在一些示例中,用于视频数据414的熵编码技术可以是自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术中的一个,如上所述。确定的熵编码技术可以被应用到视频数据414来产生压缩的视频数据424。在一些示例中,编码器模块404可以确定哪个技术提供如讨论的那样的最大压缩效率,使得关联于视频数据411的参数可以是每个编码技术等需要的比特数。在一些示例中,关联于视频数据411的参数可以基于视频数据的特性,使得确定的编码技术可以适应接收的视频数据。
[0175] 如图所示,在一些示例中,编码器模块405可以包含用于转换系数的自适应矢量VLC编码器模块651;和/或用于转换系数的自适应1D和2D VLC编码器模块652。
[0176] 如图所示,用于转换系数的自适应矢量VLC编码器模块651可以接收转换系数数据653,其可以包含对于在一个维度具有为2的块或者分区或者子分区尺寸(例如,2xK分区或者Kx2尺寸的分区)的块或者分区或者子分区的转换系数数据。自适应矢量可变长度编码技术可以被应用到转换系数数据653来产生压缩的转换系数数据655。在一些示例中,自适应矢量可变长度编码技术可以包含块或者分区的四叉树划分,代表经由(带有用单个指数值代表所有系数的单个矢量码字的)四叉树划分产生的每个象限,并使用可变长度编码技术等对码字进行熵编码。
[0177] 另外如图所示,用于转换系数的自适应1D和2D VLC编码器模块652 可以接收转换系数数据654,并可以对于尺寸4x4的块或者分区或者子分区实现自适应1维可变长度编码,并对于所有其他块或者分区或者子分区尺寸(例如4x8、8x4、8x8、16x16、32x32、64x64等)实现自适应2维可变长度编码,以产生压缩的转换系数数据656。如上所述,转换系数数据653、 654可以起因于经由自适应转换模块108实现的、像素数据的矩形(或者方形等)分区、或者像素差异值的矩形(或者方形等)的正变换,随后是经由自适应量化模块109的、得到的系数的量化。在一些示例中,可以扫描转换系数数据来将其经由编码器模块405转换至1维频率排序的分区。这样的转换可以高度自适应任何分区尺寸(例如24或以上或者32或以上的分区尺寸)、不同数据类型(例如帧内或者帧间分区的离散余弦转换系数、或者混合参数哈尔转换系数等)、和/或不同量化器设定特性(例如量化器参数和/或矩阵的各种组合)。此外,块或者分区或者子分区可以属于不同画面类型:I-画面(例如仅帧内补偿)、P-画面(例如预测)或者F-画面(例如功能);和/或可以代表不同类型的信号或者数据(例如亮度或者色度等),其可以用不同量化器设定来量化。
[0178] 如图所示,编码器模块406可以包含运动矢量预测器模块661;用于运动矢量差异的自适应VLC编码器模块662;和/或差异确定器663。如图所示,编码器模块406可以经由运动矢量预测器模块661接收视频数据416,其可以包含运动矢量数据。运动矢量预测器模块661可以基于视频数据416 (例如视频数据516的运动矢量数据),使用原始的运动矢量来执行运动矢量预测,以产生相关联的预测的运动矢量。在一些示例中,运动矢量预测可以基于预测的运动矢量的左、右、上、或者下的近邻。在一些示例中,可以使用可以共享相同或者类似的特性的其他空间邻近。例如,可以自适应地选择多个不同类型的预测,并且选择信息可以经由比特流111来提供给解码器200。差异确定器663可以确定预测的运动矢量和原始的运动矢量的差异,以产生用于熵编码的差异运动矢量。如图所示,用于运动矢量差异的自适应VLC编码器模块662可以将自适应可变长度编码技术应用至差异运动矢量,以产生压缩的视频数据526。在一些示例中,差分(例如,差异)运动矢量可以具有原始的运动矢量的两倍范围。此外1/8像素精确运动补偿可以通过为8的因子来扩展差异运动矢量的范围。在一些示例中,为了处理这样的扩展,大空间分类为更小的子区间,并可以使用子区间内的矢量索引。
[0179] 如图所示,编码器模块407可以包含用于帧内预测和方向数据的自适应VLC和/或算术编码器模块671,并可以接收视频数据417。视频数据517 可以具有数据类型,使得视频数据417可以包含帧内预测类型或者帧内预测方向数据。在一些示例中,可以基于视频数据417的参数或者特性或本文讨论的其他系统参数(例如,压缩效率等),确定对于视频数据
417的熵编码技术。在一些示例中,用于视频数据417的熵编码技术可以是自适应可变长度编码技术或者算术编码技术中的一个,如上所述。确定的熵编码技术可以应用到视频数据
417来产生压缩的视频数据427。在一些示例中,自适应可变长度编码技术可以包含基于视频数据417的内容的内容自适应可变长度编码。在一些示例中,算术编码技术可以包含基于视频数据417 的内容的内容自适应二进制算术编码。在一些示例中,视频数据417可以支持
9种或更多的预测方向和各种预测类型,包含平面、二叉树预测编码 (BTPC)等。
[0180] 如图6所示并相对于图4所述,输出编码器模块401-407(经由相关联的子模块)可以是比特流组装器408的输入,其可以输出每比特流语法的格式化的复用的比特流,如上所述。
[0181] 图7是跟据本公开的至少一些实施方式布置的示例熵解码器模块202 的示意图。如图所示,并如上相对于图5所述,熵解码器模块202可以包含头部、参数和映射数据解码器模块501;画面分区、预测分区、以及编码分区解码器模块502;编码模式和参考类型解码器模块503;编码的/未编码的数据解码器模块504;转换系数解码器模块505;运动矢量和差分运动矢量解码器模块506;帧内预测和方向数据解码器模块507;和/或比特流分解器模块
508。在一些示例中,熵解码器模块202(和相关子模块)可以执行相对于熵编码器模块110(和相关子模块)的逆技术,使得编码器模块(和子模块)和解码器模块(和子模块)之间可能有一对一对应。
[0182] 如图所示,比特流分解器模块508可以接收输入比特流201。在一些示例中,输入比特流201可以是有效比特流(诸如例如有效下一代视频(NGV) 编码的比特流,其可以遵循NGV比特流语法规范或者本文讨论的任何有效比特流)。如上相对于图5所述,比特流分解器模块508可以将输入比特流 201分解,以确定压缩的视频数据511-517,其每个可以具有一个或多个部件部分,如下文进一步描述的那样。例如,比特流分解器模块508可以使用预定义的语法或者规范来将输入比特流201根据数据类型分割为部件压缩的视频数据511-517,用于经由解码器模块501-507进行解压缩。在一些示例中,比特流分解器模块508可以执行相对于比特流组装器模块308的逆操作。在一些示例中,分解输入比特流201可以被表征为解复用。
[0183] 如图所示,解码器模块501可以包含用于头部、参数、以及映射数据的自适应VLC、符号运行VLC、和/或代理VLC解码器模块711,并可以接收压缩的视频数据511。在一些示例中,压缩的视频数据511可以包含使用自适应符号运行可变长度编码技术、自适应代理可变长度编码技术、或者可变长度编码表压缩技术中的一个的、熵编码的头部数据(例如序列和/ 或画面水平比特流头部)、变形参数、合成参数、和/或全局映射数据。在一些示例中,用于头部、参数、以及映射数据的自适应VLC、符号运行VLC、和/或代理VLC解码器模块711可以确定可应用于压缩的视频数据511的熵解码技术,并使用可应用技术将压缩的视频数据511解码以产生视频数据 521。在一些示例中,可应用的技术可以经由输入比特流201基于运输的指示符、参数、头部数据等确定。
[0184] 如图所示,解码器模块502可以包含用于画面分区的自适应码书VLC 解码器模块721;用于帧内预测分区数据的符号运行VLC和/或代理VLC 解码器模块722;和/或用于帧间预测分区和编码分区数据的符号运行VLC 和/或代理VLC解码器模块723,并可以接收压缩的视频数据512。
[0185] 如图所示,压缩的画面片或者区域数据724可以经由用于画面分区的自适应码书VLC解码器模块721来接收。在一些示例中,用于画面分区的自适应码书VLC解码器模块721可以将自适应码书可变长度编码应用至压缩的画面片或者区域数据724,以产生画面片或者区域数据727。如上所述,自适应码书可变长度编码可以包含使用适应于压缩的画面片或者区域数据 724的内容或者其他系统参数等的码书的内容自适应可变长度编码。在一些示例中,码书可以经由用于画面分区的自适应码书VLC解码器模块721来实现。
[0186] 如图所示,用于帧内预测分区数据的符号运行VLC和/或代理VLC解码器722可以接收压缩的帧内预测分区数据725。在一些示例中,压缩的帧内预测分区数据725可以包含使用本文描述的自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术中的一个的、熵编码的压缩的帧内预测分区数据。在一些示例中,用于帧内预测分区数据的符号运行VLC 和/或代理VLC解码器722可以确定可应用于压缩的帧内预测分区数据725 的熵解码技术,并使用可应用的技术将压缩的帧内预测分区数据725熵解码,以产生帧内预测分区数据728。在一些示例中,可应用的编码技术可以经由输入比特流201基于运输的指示符、参数、头部数据等确定。
[0187] 如图所示,用于帧间预测分区和编码分区数据的符号运行VLC和/或代理VLC解码器723可以接收压缩的帧间预测和编码分区数据726。在一些示例中,压缩的帧间预测和编码分区数据726可以包含使用本文描述的自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术中的一个的、熵编码的、压缩的帧间预测和编码分区数据。在一些示例中,用于帧间预测分区和编码分区数据的符号运行VLC和/或代理VLC解码器723 可以确定可应用于压缩的帧间预测和编码分区数据726的熵解码技术,并使用可应用的技术将压缩的帧间预测和编码分区数据726熵解码,以产生帧间预测和编码分区数据729。在一些示例中,可应用的编码技术可以经由输入比特流201基于运输的指示符、参数、头部数据等确定。
[0188] 如图所示,解码器模块503可以包含用于联合模式和拆分的自适应VLC 解码器模块731;用于模式的符号运行VLC和/或代理VLC解码器模块732;用于拆分的符号运行VLC和/或代理VLC解码器模块733;和/或用于参考类型的符号运行VLC和/或代理VLC解码器模块734,并可以接收压缩的视频数据513。
[0189] 如上所述相对于编码器模块403,在一些示例中,模式和拆分数据可以联合编码,并在一些示例中,模式和拆分数据可以分开编码。在一些示例中,用于联合模式和拆分的自适应VLC解码器模块731可以将编码的数据联合解码,并且用于模式的符号运行VLC和/或代理VLC解码器模块732、以及用于拆分的符号运行VLC和/或代理VLC解码器模块733可以将编码的数据分开解码。在一些示例中,数据是否联合或者分开编码可以经由输入比特流201表明。
[0190] 如图所示,模式和拆分数据的压缩的联合编码735可以经由用于联合模式和拆分的自适应VLC解码器模块731来接收。在一些示例中,用于联合模式和拆分的自适应VLC解码器模块731可以将自适应可变长度编码应用至模式和拆分数据的压缩的联合编码735,以产生模式和拆分数据的联合编码739。如上所述,自适应可变长度编码可以是适应于模式和拆分数据的压缩的联合编码735或者其他系统参数等内容的内容自适应可变长度编码。
[0191] 如图所示,用于模式的符号运行VLC和/或代理VLC解码器模块732 可以接收压缩的模式信息数据736。在一些示例中,压缩的模式信息数据 736可以包含使用本文描述的自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术中的一个的、熵编码的、压缩的模式信息数据。在一些示例中,用于模式的符号运行VLC和/或代理VLC解码器模块732 可以确定可应用于压缩的模式信息数据736的熵解码技术,并使用可应用的技术将压缩的模式信息数据736熵解码,以产生模式信息数据742。在一些示例中,可应用的编码技术可以经由输入比特流201基于运输的指示符、参数、头部数据等确定。
[0192] 如图所示,用于拆分的符号运行VLC和/或代理VLC解码器模块733 可以接收压缩的拆分信息数据737。在一些示例中,压缩的拆分信息数据 737可以包含使用本文描述的自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术中的一个的、熵编码的、压缩的拆分信息数据。在一些示例中,用于拆分的符号运行VLC和/或代理VLC解码器模块733 可以确定可应用于压缩的拆分信息数据737的熵解码技术,并使用可应用的技术将压缩的拆分信息数据737熵解码,以产生拆分信息数据743。在一些示例中,可应用的编码技术可以经由输入比特流201基于运输的指示符、参数、头部数据等确定。
[0193] 如图所示,用于参考类型的符号运行VLC和/或代理VLC解码器模块 734可以接收压缩的参考类型信息数据738。在一些示例中,压缩的参考类型信息数据738可以包含使用本文描述的自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术中的一个的、熵编码的、压缩的参考类型信息数据。在一些示例中,用于参考类型的符号运行VLC和/或代理 VLC解码器模块734可以确定可应用于压缩的参考类型信息数据738的熵解码技术,并使用可应用的技术将压缩的参考类型信息数据738熵解码,以产生参考类型信息数据744。在一些示例中,可应用的编码技术可以经由输入比特流201基于运输的指示符、参数、头部数据等确定。
[0194] 如图所示,解码器模块504可以包含用于编码的/未编码的数据的符号运行VLC和/或代理VLC解码器模块741,并可以接收压缩的视频数据514。在一些示例中,压缩的视频数据514可以包含本文讨论的、使用自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术中的一个的、熵编码的编码的/未编码的数据。在一些示例中,用于编码的/未编码的数据的符号运行VLC和/或代理VLC解码器模块741可以确定可应用于压缩的视频数据514的熵解码技术,并使用可应用的技术将压缩的视频数据514 解码,以产生视频数据524。在一些示例中,可应用的技术可以经由输入比特流201基于运输的指示符、参数、头部数据等确定。在一些示例中,可应用技术可以是自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术中的一个。
[0195] 如图所示,解码器模块505可以包含用于转换系数的自适应矢量VLC 解码器模块751;和/或用于转换系数的自适应1D和2D VLC解码器模块 752,并可以接收压缩的视频数据515。
[0196] 如图所示,用于转换系数的自适应矢量VLC解码器模块751可以接收压缩的转换系数数据753,其可以包含对于在一个维度具有为2的尺寸的块或者分区或者子分区(例如,2xK分区或者Kx2尺寸分区)的压缩的转换系数数据,如本文讨论的那样。在一些示例中,用于转换系数的自适应矢量VLC解码器模块751可以将自适应矢量可变长度编码技术应用至熵解码压缩的转换系数数据753,以产生转换系数数据755。如上所述,在一些示例中,自适应矢量可变长度编码技术可以包含使用可变长度码字,以产生块的四叉树划分的所有系数,其可以经由合并四叉树划分来产生。
[0197] 如图所示,用于转换系数的自适应1D和2D VLC解码器模块752可以接收压缩的转换系数数据754,其可以包含对于4x4和所有其他块或者分区或者子分区尺寸(例如4x8、8x4、8x8、16x16、32x32、64x64等)的块或者分区或者尺寸子分区压缩的转换系数数据。在一些示例中,用于转换系数的自适应1D和2D VLC解码器模块752可以对尺寸4x4的块或者分区或者的子分区应用自适应1维可变长度编码,并对所有其他块或者分区或者子分区尺寸(例如4x8、8x4、8x8、16x16、32x32、64x64等)应用自适应 2维可变长度编码,将压缩的转换系数数据754熵解码,以产生转换系数数据756。
[0198] 如图所示,解码器模块506可以包含用于运动矢量差异的自适应VLC 解码器模块762、运动矢量预测器761、以及增加器763,并可以接收压缩的视频数据516。在一些示例中,用于运动矢量差异的自适应VLC解码器模块762可以将压缩的视频数据516解码,以产生运动矢量差异。此外,运动矢量预测器761可以使用之前解码的相邻运动矢量来产生预测运动矢量,类似于相对于运动矢量预测器模块661讨论的技术。如图所示,解码的差异运动矢量可以经由增加器763被增加至预测运动矢量,以产生重建的运动矢量,其可以输出作为视频数据526的部分,并且此外被用于经由运动矢量预测器模块761对其他运动矢量执行运动矢量预测。
[0199] 如图所示,解码器模块507可以包含用于帧内预测类型和方向的自适应VLC和/或算术解码器模块771,并可以接收压缩的视频数据517。在一些示例中,压缩的视频数据517可以包含使用自适应VLC技术或者算术编码技术中的一个的、熵编码的帧内预测类型和方向数据。在一些示例中,用于帧内预测类型和方向的自适应VLC和/或算术解码器模块771可以确定可应用于压缩的视频数据517的熵解码技术,并使用可应用的技术将压缩的视频数据517解码,以产生视频数据527。在一些示例中,可应用的技术可以经由输入比特流201基于运输的指示符、参数、头部数据等确定。
[0200] 如上所述,视频数据521-527(包含讨论的各种子部件)可以被传输至解码器200的各种部件。此外,如讨论的那样,解码器200可以使用熵解码的视频数据521-527,以产生视频帧,其可以经由显示视频219输出,以经由显示器设备呈现或显示给用户。
[0201] 图8是示出跟据本公开的至少一些实施方式布置的示例处理800的流程图。处理800可以包含由一个或多个操作802、804、806、和/或808示出的一个或多个操作、功能或动作。处理800可以形成下一代视频编码处理的至少一部分。通过非限制性示例,处理800可以形成由图1的编码器系统100和/或图5或者7的熵编码器模块110承担的下一代视频编码处理的至少一部分。
[0202] 处理800可以开始于操作802,“获得对于熵编码的不同类型的第一和第二视频数据”,其中可以获得或接收第一和第二(或者附加的)不同类型的视频数据用于熵编码。例如,可以接收两个或更多个视频数据411-417(和 /或视频数据511-517的任何子部件)。在一些示例中,视频数据411—417 可以经由自适应熵编码器110来接收。如上所述,第一和第二(或者附加的)视频数据可以是不同类型(诸如任何类型或者子部件类型)如相对于视频数据411-417或者本文别处讨论的那样。
[0203] 在操作804处,处理800可以继续,“对第一视频数据确定熵编码技术”,其中可以对第一视频数据确定第一熵编码技术。如上所述,在一些示例中,编码器模块401-407中的一个或多个可以根据各种编码技术选项确定用于视频数据411-417的编码技术。例如,编码器模块401可以根据自适应符号运行可变长度编码技术、自适应代理可变长度编码技术、或者可变长度编码表或者表压缩技术中的一个,对视频数据411确定编码技术。此外,编码器模块402可以根据自适应符号运行可变长度编码技术和自适应代理可变长度编码技术等中的一个,对视频数据402的帧内预测分区数据625确定编码技术。本文相对于图4和6提供了范围广泛的示例,为了简洁起见,本文将不会重复。如上所述,在一些示例中,可以接收两个或更多个类型的视频数据。在一些示例中,可以对本文描述的两个、三个或更多个类型的视频数据确定熵编码技术。
[0204] 如上所述,可以对视频数据确定熵编码技术。在一些示例中,关联于第一编码技术的选择的编码表可以从两个或更多个可用表确定。例如,表选择可以基于比特计数比较、编码效率等在可用表之间进行。例如,本文讨论的任何描述的熵编码技术可以具有多个可用表。在一些示例中,表指示符可以被产生并提供在比特流900中,表明对视频数据选择的表。例如,比特流900可以包含表明选择的编码技术和选择的编码表的指示符。此外,关联于视频数据的长度的指示符可以包含在比特流900内。例如,可以提供视频数据中元组的长度或者数量(例如视频串的长度),并且任何剩余部分(例如如果长度不均匀划分为元组)可以被使用位图技术进行编码,并被提供至输出比特流。
[0205] 在操作806处,处理800可以继续,“使用第一熵编码技术将第一视频数据熵编码,并将第二视频数据熵编码来产生第一和第二压缩的视频数据”,其中,第一视频数据可以使用第一熵编码技术被熵编码,以产生第一压缩的视频数据,并且第二视频数据可以使用第二熵编码技术被压缩,以产生第一和第二压缩的视频数据。
[0206] 在操作808处,处理800可以继续,“组装第一和第二压缩的视频数据以产生输出比特流”,其中第一压缩的视频数据和第二压缩的视频数据可以被组装以产生输出比特流。例如,比特流组装器508可以将第一压缩的视频数据以及第二压缩的视频数据组装或复用,以产生输出比特流111,如本文讨论的那样。
[0207] 如上所述,在一些示例中,输出比特流111可以用音频流(编码或未编码)复用,以产生复用的音频视频的流。此外,如讨论的那样,在一些示例中,一个或多个视频数据可以在熵编码之前被预处理或者操纵。例如,对于运动矢量数据而言,可以执行运动矢量预测以产生预测的运动矢量,预测的运动矢量可以与原始的运动矢量确定差异,以产生差异运动矢量,并且差异运动矢量可以被熵编码,如本文讨论的那样。此外,在一些示例中,7个编码器模块401-407的每个可以同时被实现,来操作7个类型的视频数据411-417。处理800可以经由自适应熵编码器模块110来实现,如本文讨论的那样。此外,处理800可以对任何数量的视频数据的实例串行或者并行地重复。
[0208] 如上所述,不同类型的视频数据可以使用各种确定的(或者预定的) 自适应熵编码技术进行熵编码,以产生压缩的视频数据。压缩的视频数据可以被组装来产生输出比特流。
[0209] 图9示出跟据至少本公开的一些实施方式布置的示例比特流900。在一些示例中,比特流900可以对应于如图1、3a、4、以及6所示的输出比特流111;和/或如图2、3b、5、以及7所示的输入比特流201。尽管为了清楚呈现,在图9中未示出,在一些示例中,比特流900可以包含头部部分和数据部分。在各种示例中,比特流900可以包含关联于如本文讨论的对压缩的视频进行编码的数据、指示符、指数值、模式选择数据等。如图所示,在一些示例中,比特流900可以包含指示符数据901、压缩的视频数据 421、压缩的视频数据422、压缩的视频数据423、压缩的视频数据424、压缩的视频数据425、压缩的视频数据426、和/或压缩的视频数据427。示出的数据可以在比特流900中是任何顺序,并可以与任何其他用于对视频进行编码的各种附加的数据相邻或者由其分开。如上所述,比特流900还可以包含表明(例如在指示符数据901中)选择的编码技术和选择的编码表的指示符。此外,关联于视频数据的长度的指示符可以被包含在比特流900 内。例如,可以提供视频数据中元组的长度或者数量(例如视频串的长度),并且任何剩余部分(例如如果长度不均匀划分为元组)可以使用位图技术进行编码,并被提供至输出比特流。
[0210] 在一些示例中,压缩的视频数据421-427可以包含经由本文讨论的任何技术来编码的任何压缩的视频数据。在一些示例中,指示符数据901可以包含头部数据、模式指示符数据、和/或表明关联于压缩的视频数据421-427 的熵编码技术的数据。例如,指示符数据901可以表明用于压缩视频数据 421的熵编码技术、用于压缩视频数据422的部分的熵编码技术、用于压缩视频数据423的部分的熵编码技术、用于压缩视频数据424的熵编码技术、和/或用于压缩视频数据427的熵编码技术,如本文相对于图4和6讨论的那样。
[0211] 如上所述,比特流900可以由编码器(诸如例如编码器100)产生和/ 或由解码器200接收用于解码,使得视频帧可以经由显示器设备来呈现。
[0212] 图10是示出跟据本公开的至少一些实施方式布置的示例处理1000的流程图。处理1000可以包含由一个或多个操作1002、1004、1006、和/或 1008示出的一个或多个操作、功能或动作。处理1000可以形成下一代视频编码处理的至少一部分。通过非限制性示例,处理
1000可以形成由图2的解码器系统200承担的下一代视频解码处理的至少一部分。
[0213] 处理1000可以在操作1002处开始,“接收熵编码的比特流”,其中可以接收熵编码的比特流。例如,可以在视频解码器处接收如本文讨论的编码的比特流。在一些示例中,比特流100或者900等可以经由解码器200 来接收。
[0214] 处理1000可以在操作1004处继续,“将熵编码的比特流分解为第一压缩的视频数据和第二压缩的视频数据”,其中可以分解接收的比特流,来确定不同类型的压缩的视频数据。例如,比特流201可以经由比特流分解器 508来分解,以产生压缩的视频数据511-517(和任何子部件视频数据)如图7所示。例如,分解的压缩的视频数据可以包含第一压缩的视频和第二压缩的视频数据。
[0215] 处理1000可以在操作1006处继续,“对第一和第二压缩的视频数据进行熵解码,以产生第一视频数据和第二视频数据”,其中,第一和第二压缩的视频数据可以被熵解码,以产生(解压的)第一和第二视频数据。如上所述,在一些示例中,解码器模块501-507中的一个或多个可以根据各种编码技术选项确定用于压缩的视频数据511-517的编码技术。例如,解码器模块501可以根据自适应符号运行可变长度编码技术、自适应代理可变长度编码技术、或者可变长度编码表压缩技术中的一个,基于经由输入比特流提供的指示符,确定用于压缩的视频数据511的编码技术。此外,解码器模块502可以根据自适应符号运行可变长度编码技术和自适应代理可变长度编码技术等中的一个,确定对于视频数据512的压缩的帧内预测分区数据725的编码技术。本文相对于图5和7提供了范围广泛的示例,为了简洁起见,这里将不会重复。如上所述,在一些示例中,可以接收两个或更多个类型的视频数据。在一些示例中,可以确定对于如本文描述的两个、三个、或更多类型的视频数据的熵解码技术。
[0216] 处理1000可以在操作1008处继续,“将第一和第二视频数据解码来产生视频帧”,其中第一和第二视频数据(以及任何其他熵解码的视频数据) 可以被解码来产生视频帧。例如,视频帧可以适于经由显示器设备呈现给用户。
[0217] 如上所述,在一些示例中,一个或多个熵解码的视频数据可以是后处理的,或者在进一步解码之前被操纵。例如,熵解码的差异运动矢量可以被增加至预测运动矢量,以产生重建的运动矢量,其可以经由解码器200 被输出用于运动矢量预测(例如帧间预测)。
[0218] 本文描述的系统的各种部件可以以软件、固件、和/或硬件和/或其任何组合来实现。例如,编码器100或解码器200的各种部件可以至少部分由计算片上系统(SoC)的硬件(诸如可以在计算系统中发现的,诸如例如智能电话)来提供。本领域的技术人员可以认识到本文描述的系统可以包含未在对应的图中绘出的附加部件。例如,本文讨论的系统可以包含附加部件(诸如比特流复用器或者解复用器模块等,为了清楚而没有绘出)。
[0219] 与处理800、1000和本文讨论的其他处理相关的一些附加和/或替代细节可以被示出在本文讨论的实施方式的一个或多个的示例中,尤其是下文相对于图11说明的那样。
[0220] 图11是跟据本公开的至少一些实施方式布置的操作中的示例视频编码系统1610和视频编码处理1100的示意图。在示出的实施方式中,处理1100 可以包含一个或多个操作、功能或者动作,由一个或多个动作1100-1112示出。通过非限制性示例的方式,本文将参考示例视频编码系统1610来描述处理1100,视频编码系统1610包含图1的编码器100和图2的解码器200,如本文下面进一步相对于图16讨论的那样。在各种示例中,处理1100可以由包含编码器和解码器两者的系统承担,或者由分开的系统承担,一个系统采用编码器(和可选的解码器)且另一个系统采用解码器(和可选的编码器)。还要注意,如上所述,编码器可以包含采用本地解码器作为编码器系统的部分的本地解码循环。
[0221] 在示出的实施方式中,视频编码系统1610可以包含逻辑电路1150等和 /或其组合。例如,逻辑电路1150可以包含编码器100,并可以包含相对于图1和/或图3和5讨论的任何模块、以及解码器200,并可以包含相对于图2和/或图4和6讨论的任何模块。尽管如图16所示,视频编码系统1610 可以包含关联于特定模块的块或者动作的一个特定组,但这些块或者动作可以关联于不同于本文示出的特定模块的模块。尽管如图所示,处理1100 针对编码和解码,但描述的概念和/或操作可以分开应用到编码和/或解码,并更通常地应用到视频编码。
[0222] 处理1100可以在操作1101处开始,“获得不同类型的视频数据”,其中可以接收不同类型的视频数据用于熵编码。例如,可以接收两个或更多个类型的视频数据用于熵编码。例如,两个或更多个视频数据411-417(和/ 或视频数据411-417的任何子部件)可以经由自适应熵编码器110来接收。如上所述,第一和第二(或者附加的)视频数据可以是不同类型(诸如任何类型或者子部件类型)如相对于视频数据411-417或者本文别处讨论的那样。
[0223] 处理1100可以从操作1101到操作1102继续,“对于一个或多个类型的视频数据确定熵编码技术”,其中可以对于一个或多个视频数据类型确定熵编码技术。如上所述,在一些示例中,编码器模块401-407中的一个或多个可以根据各种编码技术选项确定用于视频数据411-417的编码技术。例如,编码器模块401可以根据自适应符号运行可变长度编码技术、自适应代理可变长度编码技术、或者可变长度编码表压缩技术中的一个,确定对视频数据411的编码技术。此外,编码器模块402可以根据自适应符号运行可变长度编码技术和自适应代理可变长度编码技术等中的一个,确定对视频数据402的帧内预测分区数据625的编码技术,如本文讨论的那样。
[0224] 处理1100可以在操作1103处继续,“使用确定的技术将视频数据熵编码”,视频数据可以使用确定的技术来熵编码。例如,第一视频数据可以使用第一熵编码技术来熵编码,以产生第一压缩的视频数据。在一些示例中,第二、第三、或者更多附加的视频数据可以使用本文讨论的第二、第三或更多附加的熵编码技术来熵编码,以产生第一、第二、第三等各压缩的视频数据。
[0225] 处理1100可以从操作1103到操作1104继续,“组装压缩的视频数据”,其中不同类型的压缩的视频数据可以被组装来产生输出比特流。例如,比特流组装器408可以将压缩的视频数据组装或复用,以产生本文讨论的输出比特流111。
[0226] 处理1100可以从操作1104到操作1105继续,“可选地用音频流将视频比特流复用”,其中视频比特流可以可选地用编码的或者未编码的音频流来复用,以产生音频视频比特流。
[0227] 处理1100可以从操作1105或者操作1104到操作1106继续,“传输比特流”,其中可以传输比特流。例如,视频编码系统1610可以经由天线1102 (请参考图16)来传输输出比特流111或者比特流800等。
[0228] 操作1101-1106可以提供视频编码和比特流传输技术,其可以由本文讨论的编码器系统采用。下面的操作,操作1107-1112可以提供视频解码和视频显示器技术,其可以由本文讨论的解码器系统采用。
[0229] 处理1100可以在操作1107处继续,“接收比特流”,其中可以接收编码的比特流。例如,输入比特流100、201、或者比特流800等可以经由解码器200来接收。在一些示例中,比特流可以包含不同类型的熵编码的数据,如本文讨论的那样。
[0230] 处理1100可以从操作1107到操作1108继续,“分解比特流来产生不同类型的压缩的视频数据”,其中接收的比特流可以被分解来确定不同类型的压缩的视频数据。例如,比特流201可以经由比特流分解器508来分解,以产生压缩的视频数据511-517(和任何子部件视频数据)如图7所示。例如,分解的压缩的视频数据可以包含第一、第二、第三、或者更多压缩的视频数据。
[0231] 处理1100可以从操作1108到操作1109继续,“确定对于一个或多个类型的压缩的视频数据的熵解码技术”,可以确定对于一个或多个压缩的视频数据类型的熵解码技术。在一些示例中,熵解码技术可以基于经由接收的比特流运输的标志或者指示符等来确定。如上所述,在一些示例中,解码器模块501-507中的一个或多个可以根据各种编码技术选项确定用于压缩的视频数据511-517的编码技术。例如,解码器模块401可以根据自适应符号运行可变长度编码技术、自适应代理可变长度编码技术、或者可变长度编码表压缩技术中的一个,基于经由输入比特流提供的指示符,确定用于压缩的视频数据511的编码技术。此外,解码器模块502可以从自适应符号运行可变长度编码技术和自适应代理可变长度编码技术等中的一个,确定对视频数据512的压缩的帧内预测分区数据725的编码技术。本文提供了范围广泛的示例,为了简洁起见,本文将不会重复。如上所述,在一些示例中,可以接收两个或更多个类型的视频数据。在一些示例中,可以对本文讨论的两个、三个、或更多类型的视频数据确定熵解码技术。
[0232] 处理1100可以从操作1109到操作1610继续,“将压缩的视频数据熵解码”,其中压缩的视频数据可以基于确定的熵解码技术来熵解码。例如,压缩的视频数据511-517可以经由解码模块501-507来熵解码。
[0233] 处理1100可以从操作1610到操作1111继续,“将熵解码的视频数据解码来产生视频帧”,其中第一和第二视频数据(以及任何其他熵解码的视频数据)可以被解码来产生视频帧。例如,视频帧可以适于经由显示器设备呈现给用户。例如,视频帧可以基于相对于解码器200讨论的解码技术的实施方式来确定。
[0234] 处理1100可以从操作1111到操作1112继续,“传输视频帧用于经由显示器设备呈现”,其中产生的视频帧可以被传输用于经由显示器设备呈现。例如,视频帧可以被传输至显示器设备1605 (如图16所示)用来呈现。在一些示例中,例如显示器设备1 60 5 可以显示视频帧给用户。
[0235] 虽然本文的示例处理的实施方式可以包含示出的顺序示出的所有操作的承担,但本公开不限于此,在各种示例中,本文的示例处理的实施方式可以包含示出的操作的仅子集的承担和/或以不同于示出的顺序。
[0236] 此外,本文讨论的任何一个或多个操作可以响应于由一个或多个计算机程序产品提供的指令来承担。这样的程序产品可以包含提供指令的信号承载介质,当例如由处理器执行时,指令可以提供本文描述的功能。计算机程序产品可以设置在任何形式的一个或多个机器可读介质中。因此,例如,包含一个或多个处理器核心的处理器可以响应于通过一个或多个机器可读介质运输给处理器的程序代码和/或指令或者指令集,承担本文的示例处理的一个或多个操作。一般而言,机器可读介质可以以程序代码和/或指令或者指令集的形式运输软件,该软件可以使本文描述的任何设备和/或系统实现本文讨论的视频系统的至少部分。
[0237] 如在本文描述的任何实施方式中使用的,术语“模块”是指配置为提供本文说明的功能的软件逻辑、固件逻辑和/或硬件逻辑的任何组合。软件可以实施为软件包、代码和/或指令集或者指令;并且如用于本文描述的任何实施方式的“硬件”,例如可以包含单独或者以任何组合的硬连线电路、可编程电路、状态机电路和/或存储由可编程电路执行的指令的固件。模块可以共同或者单独实施为形成更大系统的部分的电路,例如集成电路(IC)、片上系统(SoC)等。例如,模块可以在逻辑电路中实施,用于经由软件、固件、或者硬件的本文讨论的编码系统的实施方式。
[0238] 图12是示出跟据本公开的至少一些实施方式布置的示例处理1200的流程图。处理1200可以包含一个或多个操作、功能、或者动作,如由一个或多个操作示出。处理1200可以形成下一代视频编码处理的至少一部分。通过非限制性示例,处理1200可以形成由图1的编码器系统100和/或本文说明的任何其他编码器系统或者子系统承担的下一代视频编码处理的至少一部分。
[0239] 处理1200可以在操作1202处开始,“接收视频序列的输入视频帧”,其中视频序列的输入视频帧例如可以经由编码器100来接收。
[0240] 处理1200可以在操作1204处继续,“将画面类型与每个视频帧关联”,其中画面类型可以例如经由内容预分析器模块102与一组画面中的每个视频帧关联。例如,画面类型可以是F/B-画面、P-画面、或者I-画面等。在一些示例中,视频序列可以包含画面的群组,并且本文描述的处理(例如操作1203至1211)可以对一组画面的帧或者画面执行;并且处理可以对群组的所有帧或者画面重复,进而,对视频序列中的画面的所有群组重复。
[0241] 处理1200可以在操作1206处继续,“将画面划分为图块和/或超片段以及潜在的预测分段”,其中画面可以例如经由预测分区产生器105被划分为图块或者超片段以及潜在的预测分区。
[0242] 处理1200可以在操作1210处继续,“对于潜在的预测分段,确定潜在的预测误差”,其中对于每个潜在的预测分段,可以确定潜在的预测误差。例如,对于每个预测分段(和相关联的预测分区、预测、以及预测参数),可以确定预测误差。例如,确定潜在的预测误差可以包含确定原始像素(例如,预测分区的原始像素数据)与预测像素的差异。在一些示例中,可以存储相关联的预测参数。如上所述,在一些示例中,预测误差数据分区可以包含至少部分基于之前使用变形技术或者合成技术中的至少一个产生的解码的帧,而产生的预测误差数据。
[0243] 处理1200可以在操作1212处继续,“选择预测分段和预测类型并保存参数”,其中可以选择预测分段和预测类型,并可以保存相关联的参数。在一些示例中,可以选择具有最小预测误差的潜在的预测分段。在一些示例中,潜在的预测分段可以基于比特率失真优化(RDO)来选择。
[0244] 处理1200可以在操作1214处继续,“对潜在的编码分段执行转换”,其中可以对分区预测误差数据的各种潜在的编码分段执行具有各种块尺寸的固定或者内容自适应转换。例如,分区预测误差数据可以被分区来产生多个编码分区。例如,分区预测误差数据可以由本文讨论的编码分区产生器模块107的bi-tree编码分区器模块或者k-d树编码分区器模块来分区。在一些示例中,关联于F/B-或者P-画面的分区预测误差数据可以由bi-tree 编码分区器模块来分区。在一些示例中,关联于I-画面(例如在一些示例中为图块或者超片段)的视频数据可以由k-d树编码分区器模块来分区。在一些示例中,可以经由开关来选用或选择编码分区器模块。例如,分区可以由编码分区产生器模块107来产生。
[0245] 处理1200可以在操作1216处继续,“确定最佳编码分段、转换块尺寸、以及实际转换”,其中可以确定最佳编码分段、转换块尺寸、以及实际转换。例如,(例如具有各种编码分区的)各种编码分段可以基于RDO或者另一个基础来评价,以确定选择的编码分段(其还可以包含当编码分区不匹配转换块尺寸时,进一步将编码分区划分为转换块,如讨论的那样)。例如,实际转换(或者选择的转换)可以包含本文描述的对编码分区或者块尺寸执行的任何内容自适应转换或者固定转换。
[0246] 处理1200可以在操作1218处继续,“量化并扫描转换系数”,其中可以量化并扫描关联于编码分区(和/或转换块)的转换系数,准备熵编码。
[0247] 处理1200可以在操作1222处继续,“将关联于每个图块或者超片段解码的数据(诸如编码分区指示符、块尺寸数据、转换类型数据、量化器(Qp)、以及量化的转换系数、运动矢量和参考类型数据、特性参数(例如mop、 syp))熵编码”,其中数据可以被熵编码。例如,熵编码的数据可以包含编码分区指示符、块尺寸数据、转换类型数据、量化器(Qp)、量化的转换系数、运动矢量和参考类型数据、特性参数(例如mop、syp)等和/或其组合。附加地或替代地,熵编码的数据可以包含预测分段、预测参数、选择的编码分段、选择的特性数据、运动矢量数据、量化的转换系数、滤波器参数、选择数据(诸如模式选择数据)、以及指示符。
[0248] 处理1200可以在操作1223处继续“应用DD/DB滤波器,重建像素数据,组装为画面”,其中可以应用去块滤波(例如DD或者DB滤波器),可以重建像素数据,并组装为画面。例如,在本地解码循环(例如包含逆扫描、逆转换、以及组装编码分区)之后,可以产生预测误差数据分区。预测误差数据分区可以增加预测分区,以产生重建的预测分区,其可以组装为图块或者超片段。组装的图块或者超片段可以可选地经由去块滤波和/或质量恢复滤波来处理,并被组装来产生画面。
[0249] 处理1200可以在操作1224处继续“应用QR/LF滤波器,保存在参考画面缓冲器中”,其中可以应用质量恢复滤波(例如QR或者LF滤波),并且组装的画面可以保存在参考画面缓冲器中。例如,除了或者替代DD/DB 滤波,组装的图块或者超片段可以可选地经由质量恢复滤波来处理,并被组装来产生画面。画面可以被保存在解码的画面缓冲器119中作为用于其他(例如下个)画面的预测的参考画面。
[0250] 处理1200可以在操作1225处继续,“应用AP/AM滤波器,确定修改 (例如变形或者合成)特性参数来产生变形的或者合成的预测参考,并执行预测”,其中可以执行修改(例如变形或者合成)特性参数和预测,并且可以应用自适应运动滤波或者自适应精确滤波(例如AP/AM滤波器)。例如,可以产生用于产生变形的或者合成的预测参考的修改(例如变形或者合成)特性参数,并可以执行预测。另外,处理中此时可以应用自适应运动滤波或者自适应精确滤波。
[0251] 如上所述,在一些示例中,可以执行帧间预测。在一些示例中,高达4 个解码的过去和/或将来的画面和若干变形/合成预测可以被用于产生大量的参考类型(例如参考画面)。例如在‘帧间’模式中,可以在P-画面中支持高达9个参考类型,并且对于F/B-画面可以支持高达10个参考类型。此外,‘多帧’模式可以提供一种类型的帧间预测模式,其中,不是1个参考画面,可以使用2个参考画面,并且P-和F/B-画面可以分别允许3个、以及高达8个参考类型。例如,预测可以基于使用变形技术或者合成技术中的至少一个产生的之前解码的帧。在这样的示例中,比特流(下文相对于操作1212讨论)可以包含关联于预测分区的帧参考、变形参数、或者合成参数。
[0252] 处理1200可以在操作1229处继续“可选地应用EP滤波器和/或可选地应用FI/FP滤波器”,其中可以可选地应用增强的预测的分区(例如EP滤波)或者FI/FP滤波(例如融合滤波或者融合改善滤波)。在一些示例中,可以决定是否利用一些形式或者FI/FP滤波器(融合改善滤波/融合滤波) 或者不使用FI/FP滤波。当一些形式或者FI/FP滤波器(例如融合滤波或者融合改善滤波)要被应用到选择的预测的分区时,该选择的预测的分区和第二选择的预测的分区可以组装来产生至少一部分的组装画面。FI/FP滤波可以被应用来滤波组装画面的部分。关联于FI/FP滤波的FI/FP滤波参数(例如滤波参数或者融合改善滤波参数)可以被产生并发送至熵编码器子系统。
[0253] 在实施方式中,当EP滤波或者FI/FP滤波两者可用时,可以产生的指示符表明解码器系统是否使用增强的预测的分区(例如EP滤波)、或者预测的分区数据,作为用于预测分区的选择的预测的分区。
[0254] 操作1202至1229可以提供视频编码和比特流传输技术,其可以由本文讨论的编码器系统采用。
[0255] 图13示出跟据至少本公开的一些实施方式布置的示例比特流1300。在一些示例中,比特流1300可以对应于图1所示的输出比特流111和/或图2 所示的输入比特流201。尽管为了清楚呈现,在图29中未示出,在一些示例中,比特流1300可以包含头部部分和数据部分。在各种示例中,比特流 1300可以包含关联于本文讨论的将视频帧编码的数据、指示符、指数值、模式选择数据等。
[0256] 如上所述,比特流1300可以由编码器(诸如例如编码器100)产生和/ 或由解码器200接收用于解码,使得解码的视频帧可以经由显示器设备呈现。
[0257] 图14是示出跟据本公开的至少一些实施方式布置的示例处理1400的流程图。处理1400可以包含一个或多个操作、功能、或者动作,如由一个或多个操作示出。处理1400可以形成下一代视频编码处理的至少一部分。通过非限制性示例的方式,处理1400可以形成由解码器系统200和/或本文描述的任何其他解码器系统或者子系统承担的下一代视频解码处理的至少一部分。
[0258] 处理1400可以在操作1402处开始,“接收解码的比特流”,其中可以接收比特流。例如,可以在视频解码器处接收如本文讨论那样编码的比特流。在一些示例中,比特流900或者1300可以经由解码器200来接收。
[0259] 处理1400可以在操作1404处继续,“将熵解码的比特流解码来确定编码分区指示符、块尺寸数据、转换类型数据、量化器(Qp)、量化的转换系数、运动矢量和参考类型数据、特性参数(例如mop、syp)”,其中可以解码比特流来确定编码分区指示符、块尺寸数据、转换类型数据、量化器(Qp)、量化的转换系数、运动矢量和参考类型数据、特性参数(例如mop、syp) 等和/或其组合。附加地或替代地,熵编码的数据可以包含预测分段、预测参数、选择的编码分段、选择的特性数据、运动矢量数据、量化的转换系数、滤波器参数、选择数据(诸如模式选择数据)、以及指示符。
[0260] 处理1400可以在操作1406处继续,“对量化的系数应用量化器(Qp) 来产生逆量化的转换系数”,其中量化器(Qp)可以被应用到量化的转换系数,来产生逆量化的转换系数。例如,操作1406可以经由自适应逆量化模块203来应用。
[0261] 处理1400可以在操作1408处继续,“对于编码(或者帧内预测的)分区中的系数的每个解码的块,基于转换类型和块尺寸数据执行逆转换,以产生解码的预测误差分区”,其中对于编码(或者帧内预测的)分区中的转换系数的每个解码的块,可以基于转换类型和块尺寸数据执行逆转换,以产生解码的预测误差分区。在一些示例中,逆转换可以包含逆固定转换。在一些示例中,逆转换可以包含逆内容自适应转换。在这样的示例中,执行逆内容自适应转换可以包含基于本文讨论的解码的视频数据的相邻块,确定关联于逆内容自适应转换的基础功能。用于本文讨论的编码的任何正变换可以用于使用相关联的逆转换来解码。在一些示例中,逆转换可以由自适应逆转换模块204执行。在一些示例中,产生解码的预测误差分区还可以包含经由编码分区组装器205对编码分区进行组装。
[0262] 处理1400可以在操作1423处继续“应用DD/DB滤波器,重建像素数据,组装为画面”,其中可以应用去块滤波(例如DD或者DB滤波器),可以重建像素数据,并组装为画面。例如,在逆扫描、逆转换、以及组装编码分区之后,预测误差数据分区可以增加预测分区,以产生可以被组装为图块或者超片段的重建的预测分区。组装的图块或者超片段可以可选地经由去块滤波来处理。
[0263] 处理1400可以在操作1424处继续“应用QR/LF滤波器,保存在参考画面缓冲器中”,其中可以应用质量恢复滤波(例如QR或者LF滤波),并且组装的画面可以保存在参考画面缓冲器中。例如,除了或者替代DD/DB 滤波,组装的图块或者超片段可以可选地经由质量恢复滤波来处理,并且被组装来产生画面。画面可以被保存在解码的画面缓冲器119中作为用于其他(例如下个)画面的预测的参考画面。
[0264] 处理1400可以在操作1425处继续,“应用AP/AM滤波器,使用解码的修改特性(例如mop、syp)来产生用于预测的修改的参考,并使用运动矢量和参考信息、预测的分区信息、以及修改的参考来产生预测的分区”,其中可以产生用于预测的修改的参考、也可以产生预测的分区,并可以应用自适应运动滤波或者自适应精确滤波(例如AP/AM滤波器)。例如,可以至少部分基于解码的修改特性(例如mop、syp)来产生用于预测的修改的参考;并且可以至少部分基于运动矢量和参考信息、预测的分区信息、以及修改的参考来产生预测的分区。另外,处理中此时可以应用自适应运动滤波或者自适应精确滤波。
[0265] 处理1400可以在操作1429处继续,“可选地应用EP滤波器和/或可选地应用FI/FP滤波器”,其中可以可选地应用增强的预测的分区(例如EP 滤波)或者FI/FP滤波(例如融合滤波或者融合改善滤波)。在一些示例中,可以决定是否利用一些形式或者FI/FP滤波器(融合改善滤波/融合滤波) 或者不使用FI/FP滤波。当一些形式或者FI/FP滤波器(例如融合滤波或者融合改善滤波)要被应用到选择的预测的分区时,该选择的预测的分区和第二选择的预测的分区可以被组装来产生至少一部分的组装画面。FI/FP滤波可以被应用来滤波组装画面的部分。关联于FI/FP滤波的FI/FP滤波参数 (例如滤波参数或者融合改善滤波参数)可以被产生并发送至熵编码器子系统。
[0266] 在实施方式中,当EP滤波或者FI/FP滤波两者可用时,可以从编码器系统接收指示符,其向解码器系统表明是否使用增强的预测的分区(例如 EP滤波)、或者预测的分区数据,作为用于预测分区的选择的预测的分区。
[0267] 处理1400可以在操作1430处继续,“增加预测分区到解码的预测误差数据分区,以产生重建的分区”,其中预测分区被增加至解码的预测误差数据分区,以产生重建的预测分区。例如,解码的预测误差数据分区可以经由增加器206被增加至相关联的预测分区。
[0268] 处理1400可以在操作1432处继续,“组装重建的分区来产生图块或者超片段”,其中重建的预测分区可以被组装来产生图块或者超片段。例如,重建的预测分区可以经由预测分区组装器模块207被组装来产生图块或者超片段。
[0269] 处理1400可以在操作1434处继续,“组装画面的图块或者超片段来产生全解码画面”,其中画面的图块或者超片段可以被组装来产生全解码画面。例如,在可选的去块滤波和/或质量恢复滤波之后,图块或者超片段可以被组装来产生全解码画面,其可以经由解码的画面缓冲器210来存储,和/或在经由自适应画面重新组织器模块217和内容后恢复器模块218处理之后被传输用于经由显示器设备呈现。
[0270] 图15(A)、15(B)、以及15(C)提供跟据本公开的至少一些实施方式布置的操作中的示例视频编码系统1600和视频编码处理1500的示意图。在示出的实施方式中,处理1500可以包含一个或多个的操作、功能或者动作,由一个或多个的动作1501至1580示出。通过非限制性示例的方式,本文将参考示例视频编码系统1600来说明处理1500,视频编码系统1610 包含图1的编码器100和图2的解码器200,如本文下面进一步相对于图 16讨论的那样。在各种示例中,处理1500可以由包含编码器和解码器两者的系统承担,或者由分开的系统承担,一个系统采用编码器(和可选的解码器)且另一个系统采用解码器(和可选的编码器)。还要注意,如上所述,编码器可以包含采用本地解码器作为编码器系统的部分的本地解码循环。
[0271] 在示出的实施方式中,视频编码系统1600可以包含逻辑电路1650等,和/或其组合。例如,逻辑电路1650可以包含图1的编码器系统100和/或图2的解码器系统200,并可以包含相对于本文描述的任何编码器系统或者子系统和/或本文描述的解码器系统或者子系统讨论的任何模块。尽管如图 15(A)至(C)所示,视频编码系统1600可以包含关联于特定模块的块或者动作的一个特定组,但这些块或者动作可以关联于不同于本文示出的特定模块的模块。尽管如图所示,处理1500针对编码和解码,但说明的概念和/或操作可以分开应用到编码和/或解码,并更通常地应用到视频编码。
[0272] 处理1500可以在操作1501处开始,“接收视频序列的输入视频帧”,其中视频序列的输入视频帧例如可以经由编码器100来接收。
[0273] 处理1500可以在操作1502处继续,“将画面类型与一组画面中的每个视频帧关联”,其中画面类型可以例如经由内容预分析器模块102与一组画面中的每个视频帧关联。例如,画面类型可以是F/B-画面、P-画面、或者I-画面等。在一些示例中,视频序列可以包含画面的群组,并且本文描述的处理(例如操作1503至1511)可以对一组画面的帧或者画面执行;并且处理可以对群组的所有帧或者画面重复,进而,对视频序列中的画面的所有群组重复。
[0274] 处理1500可以在操作1503处继续,“将画面划分为图块和/或超片段以及潜在的预测分段”,其中画面可以例如经由预测分区产生器105被划分为图块或者超片段以及潜在的预测分段。
[0275] 处理1500可以在操作1504处继续,“对于每个潜在的预测分段,执行预测并确定预测参数”,其中对于每个潜在的预测分区,可以执行预测并可以确定预测参数。例如,可以产生潜在的预测分段的范围(每个具有各种预测分区),并可以确定相关联的预测和预测参数。例如,预测可以包含使用基于特性和运动的多参考预测或者帧内预测的预测。
[0276] 如上所述,在一些示例中,可以执行帧间预测。在一些示例中,高达4 个解码的过去和/或将来的画面以及若干变形/合成预测可以被用于产生大量的参考类型(例如参考画面)。例如在‘帧间’模式中,可以在P-画面中支持高达9个参考类型,并且对于F/B-画面可以支持高达10个参考类型。此外,‘多帧’模式可以提供一种类型的帧间预测模式,其中,不是1个参考画面,可以使用2个参考画面,并且P-和F/B-画面可以分别允许3个、以及高达8个参考类型。例如,预测可以基于使用变形技术或者合成技术中的至少一个产生的之前解码的帧。在这样的示例中,比特流(下文相对于操作1512讨论)可以包含关联于预测分区的帧参考、变形参数、或者合成参数。
[0277] 处理1500可以在操作1505处继续,“对于每个潜在的预测分段,确定潜在的预测误差”,其中对于每个潜在的预测分段,可以确定潜在的预测误差。例如,对于每个预测分段(和相关联的预测分区、预测、以及预测参数),可以确定预测误差。例如,确定潜在的预测误差可以包含确定原始像素(例如,预测分区的原始像素数据)与预测像素的差异。在一些示例中,可以存储相关联的预测参数。如上所述,在一些示例中,预测误差数据分区可以包含至少部分基于使用变形技术或者合成技术中的至少一个产生的之前解码的帧,而产生的预测误差数据。
[0278] 处理1500可以在操作1506处继续,“选择预测分段和预测类型并保存参数”,其中可以选择预测分段和预测类型,并可以保存关联的参数。在一些示例中,可以选择具有最小预测误差的潜在的预测分段。在一些示例中,潜在的预测分段可以基于比特率失真优化(RDO)来选择。
[0279] 处理1500可以在操作1507处继续,“对分区预测误差数据的各种潜在的编码分段执行具有各种块尺寸的固定的或者内容自适应的转换”,其中可以对分区预测误差数据的各种潜在的编码分段执行具有各种块尺寸的固定的或者内容自适应的转换。例如,分区预测误差数据可以被分区来产生多个编码分区。例如,分区预测误差数据可以由本文讨论的编码分区产生器模块107的bi-tree编码分区器模块或者k-d树编码分区器模块分区。在一些示例中,关联于F/B-或者P-画面的分区预测误差数据可以由bi-tree编码分区器模块分区。在一些示例中,关联于I-画面(例如在一些示例中为图块或者超片段)的视频数据可以由k-d树编码分区器模块分区。在一些示例中,可以经由开关来选用或选择编码分区器模块。例如,分区可以由编码分区产生器模块107产生。
[0280] 处理1500可以在操作1508处继续,“确定最佳编码分段、转换块尺寸、以及实际转换”,其中可以确定最佳编码分段、转换块尺寸、以及实际转换。例如,(例如具有各种编码分区的)各种编码分段可以基于RDO或者另一个基础来评价,以确定选择的编码分段(其还可以包含当编码分区不匹配转换块尺寸时,进一步将编码分区划分为转换块,如讨论的那样)。例如,实际转换(或者选择的转换)可以包含本文描述的对编码分区或者块尺寸执行的任何内容自适应转换或者固定转换。
[0281] 处理1500可以在操作1509处继续,“量化并扫描转换系数”,其中可以量化并扫描关联于编码分区(和/或转换块)的转换系数,准备熵编码。
[0282] 处理1500可以在操作1511处继续,“将关联于每个图块或者超片段的数据熵编码”,其中关联于每个图块或者超片段的数据可以被熵编码。例如,关联于每个视频序列的每组的画面的每个画面的每个图块或者超片段的数据可以被熵编码。熵编码的数据可以包含预测分段、预测参数、选择的编码分段、选择的特性数据、运动矢量数据、量化的转换系数、滤波器参数、选择数据(诸如模式选择数据)、以及指示符。
[0283] 处理1500可以在操作1512处继续,“产生比特流”,其中可以基于熵编码的数据来产生比特流。如上所述,在一些示例中,比特流可以包含关联于预测分区的帧或者画面参考、变形参数、或者合成参数。
[0284] 处理1500可以在操作1513处继续,“传输比特流”,其中可以传输比特流。例如,视频编码系统2400可以经由天线1602 (请参考图16 )来传输输出比特流111、比特流2100等。
[0285] 处理1500可以在操作1520处继续,“重建像素数据,组装为画面,并保存在参考画面缓冲器中”,其中可以重建像素数据,组装为画面,并保存在参考画面缓冲器中。例如,在本地解码循环(例如包含逆扫描、逆转换、以及组装编码分区)之后,可以产生预测误差数据分区。预测误差数据分区可以增加预测分区,以产生重建的预测分区,其可以组装为图块或者超片段。组装的图块或者超片段可以可选地经由去块滤波和/或质量恢复滤波来处理,并且被组装来产生画面。画面可以被保存在解码的画面缓冲器119 中作为用于其他(例如下个)画面的预测的参考画面。
[0286] 处理1500可以在操作1523处继续“应用DD/DB滤波器,重建像素数据,组装为画面”,其中可以应用去块滤波(例如DD或者DB滤波器),可以重建像素数据,并组装为画面。例如,在本地解码循环(例如包含逆扫描、逆转换、以及组装编码分区)之后,可以产生预测误差数据分区。预测误差数据分区可以增加预测分区,以产生重建的预测分区,其可以被组装为图块或者超片段。组装的图块或者超片段可以可选地经由去块滤波和/ 或质量恢复滤波来处理,并被组装来产生画面。
[0287] 处理1500可以在操作1524处继续“应用QR/LF滤波器,保存在参考画面缓冲器中”,其中可以应用质量恢复滤波(例如QR或者LF滤波),并且组装的画面可以被保存在参考画面缓冲器中。例如,除了或者替代DD/DB 滤波,组装的图块或者超片段可以可选地经由质量恢复滤波来处理,并且被组装来产生画面。画面可以被保存在解码的画面缓冲器119中作为用于其他(例如下个)画面的预测的参考画面。
[0288] 处理1500可以在操作1525处继续,“产生修改特性参数”,其中可以产生修改的特性参数。例如,可以至少部分基于第二解码的预测参考画面,产生第二修改的预测参考画面和关联于第二修改的预测参考画面的第二修改特性参数,其中第二修改的参考画面可以与第一修改的参考画面是不同类型。
[0289] 处理1500可以在操作1526处继续,“产生修改的预测参考画面”,其中可以产生修改的预测参考画面,例如,可以至少部分基于第一解码的预测参考画面,产生第一修改的预测参考画面和关联于第一修改的预测参考画面的第一修改特性参数。
[0290] 处理1500可以在操作1527处继续,“产生运动数据”,其中可以产生运动估计数据。例如,可以至少部分基于第一修改的预测参考画面或者第二修改的预测参考画面中的一个,产生关联于当前画面的预测分区的运动数据。
[0291] 处理1500可以在操作1528处继续,“应用AP/AM滤波器来执行运动补偿”,其中可以执行运动补偿。例如,可以至少部分基于运动数据和第一修改的预测参考画面或者第二修改的预测参考画面中的至少一个来执行运动补偿,以产生用于预测分区的预测分区数据,并且可以应用自适应运动滤波或者自适应精确滤波(例如AP/AM滤波器)。处理1500可以将该信息馈送回操作1504,其中每个解码的预测误差分区(例如包含零预测误差分区)可以被增加至对应的预测分区,以产生重建的预测分区。另外,处理中此时可以应用自适应运动滤波或者自适应精确滤波。
[0292] 处理1500可以在操作1529处继续“可选地应用EP”,其中可以可选地应用增强的预测的分区(例如EP滤波)。在一些示例中,当EP滤波或者 FI/FP滤波两者可用时,可以产生指示符,其向解码器系统表明是否使用增强的预测的分区(例如EP滤波)或者预测的分区数据,作为用于预测分区的选择的预测的分区。
[0293] 处理1500可以在操作1530处继续“可选地应用FI/FP滤波器”,其中可以可选地应用FI/FP滤波(例如融合滤波或者融合改善滤波)。在一些示例中,可以决定是否利用一些形式或者FI/FP滤波器(融合改善滤波/融合滤波)或者不使用FI/FP滤波。当一些形式或者FI/FP滤波器(例如融合滤波或者融合改善滤波)要被应用到选择的预测的分区时,该选择的预测的分区和第二选择的预测的分区可以被组装来产生至少一部分的组装画面。 FI/FP滤波可以被应用来滤波组装画面的部分。关联于FI/FP滤波的FI/FP 滤波参数(例如滤波参数或者融合改善滤波参数)可以被产生并且被发送至熵编码器子系统。
[0294] 操作1501至1530可以提供视频编码和比特流传输技术,其可以由本文讨论的编码器系统采用。下面的操作,操作1554至1568可以提供视频解码和视频显示器技术,其可以由本文讨论的解码器系统采用。
[0295] 处理1500可以在操作1554处继续,“接收比特流”,其中可以接收比特流。例如,输入比特流201、比特流2100等可以经由解码器200来接收。在一些示例中,比特流可以包含关联于编码分区、一个或多个的指示符的数据,和/或限定编码分区的数据,如上所述。在一些示例中,比特流可以包含预测分段、预测参数、选择的编码分段、选择的特性数据、运动矢量数据、量化的转换系数、滤波器参数、选择数据(诸如模式选择数据)、以及指示符。
[0296] 处理1500可以在操作1555处继续,“解码比特流”,其中可以经由例如自适应熵解码器模块202将接收的比特流解码。例如,接收的比特流可以被熵解码来确定预测分段、预测参数、选择的编码分段、选择的特性数据、运动矢量数据、量化的转换系数、滤波器参数、选择数据(诸如模式选择数据)、以及指示符。
[0297] 处理1500可以在操作1556处继续,“对每个编码分区的每个块执行逆扫描和逆量化”,其中可以对于正被处理的预测分区的每个编码分区的每个块执行逆扫描和逆量化。例如,可以经由自适应逆量化模块203执行逆扫描和逆量化。
[0298] 处理1500可以在操作1557处继续,“执行固定的或者内容自适应逆转换来解码转换系数以确定解码的预测误差数据分区”,其中可以执行固定的或者内容自适应逆转换来解码转换系数,以确定解码的预测误差数据分区。例如,逆转换可以包含逆内容自适应转换(诸如混合参数哈尔逆转换,使得混合参数哈尔逆转换可以在参数转换方向的方向包含参数哈尔逆转换,并在与参数转换方向正交的方向包含离散余弦逆转换)。在一些示例中,固定的逆转换可以包含离散余弦逆转换或者离散余弦逆转换近似器。例如,可以经由自适应逆转换模块204执行固定的或者内容自适应转换。如上所述,内容自适应逆转换可以基于其他之前解码的数据(诸如例如解码的相邻分区或者块)。在一些示例中,产生解码的预测误差数据分区可以包含经由编码分区组装器模块205将解码的编码分区组装。
[0299] 处理1500可以在操作1558处继续,“对每个预测分区产生预测像素数据”,其中可以对每个预测分区产生预测像素数据。例如,可以使用选择的预测类型(例如基于特性和运动、或者帧内、或者其他类型)和相关联的预测参数来产生预测像素数据。
[0300] 处理1500可以在操作1559处继续,“向每个解码的预测误差分区增加对应的预测分区来产生重建的预测分区”,其中每个解码的预测误差分区 (例如,包含零预测误差分区)可以被增加至对应的预测分区来产生重建的预测分区。例如,预测分区可以经由图2所示的解码循环来产生,并且经由增加器206被增加至解码的预测误差分区。
[0301] 处理1500可以在操作1560处继续,“组装重建的预测分区来产生解码的图块或者超片段”,其中重建的预测分区可以被组装来产生解码的图块或者超片段。例如,预测分区可以经由预测分区组装器模块207来组装,以产生解码的图块或者超片段。
[0302] 处理1500可以在操作1561处继续,“应用去块滤波和/或QR滤波来产生最终解码的图块或者超片段”,其中可选的去块滤波和/或质量恢复滤波可以被应用到解码的图块或者超片段,以产生最终解码的图块或者超片段。例如,可以经由去块滤波模块208应用可选的去块滤波和/或可以经由质量恢复滤波模块209应用可选的质量恢复滤波。
[0303] 处理1500可以在操作1562处继续,“将解码的图块或者超片段组装来产生解码的视频画面,并保存在参考画面缓冲器中”,其中解码(或者最终解码)的图块或者超片段可以被组装来产生解码的视频画面,并且解码的视频画面可以被保存在参考画面缓冲器(例如解码的画面缓冲器210)中,用于将来的预测。
[0304] 处理1500可以在操作1563处继续,“传输解码的视频帧来经由显示器设备呈现”,其中解码的视频帧可以被传输来经由显示器设备呈现。例如,解码的视频画面可以经由自适应画面重新组织器217和内容后恢复器模块 218来进一步处理,并作为显示视频219的视频帧被传输至显示器设备来呈现给用户。例如,视频帧可以被传输至显示器设备1605 (如图16 所示)用来呈现。
[0305] 处理1500可以在操作1573处继续“应用DD/DB滤波器,重建像素数据,组装为画面”,其中可以应用去块滤波(例如DD或者DB滤波器),可以重建像素数据,并组装为画面。例如,在逆扫描、逆转换、以及组装编码分区之后,预测误差数据分区可以增加预测分区,以产生可以被组装为图块或者超片段的重建的预测分区。组装的图块或者超片段可以可选地经由去块滤波来处理。
[0306] 处理1500可以在操作1574处继续“应用QR/LF滤波器,保存在参考画面缓冲器中”,其中可以应用质量恢复滤波(例如QR或者LF滤波),并且组装的画面可以被保存在参考画面缓冲器中。例如,除了或者替代DD/DB 滤波,组装的图块或者超片段可以可选地经由质量恢复滤波来处理,并且被组装来产生画面。画面可以被保存在画面缓冲器中作为用于其他(例如下个)画面的预测的参考画面。
[0307] 处理1500可以在操作1576处继续,“产生修改的预测参考画面”,其中可以产生修改的预测参考画面,例如可以至少部分基于第三修改特性参数,产生至少一部分第三修改的预测参考画面。类似地,可以至少部分基于相关联的第二修改特性参数,产生至少一部分第四修改的预测参考画面。
[0308] 处理1500可以在操作1577处继续,“产生运动数据”,其中可以产生运动估计数据。例如,可以至少部分基于第三修改的预测参考画面或者第三修改的预测参考画面中的一个,产生关联于当前画面的预测分区的运动数据。
[0309] 处理1500可以在操作1578处继续,“应用AP/AM滤波器并执行运动补偿”,其中可以执行运动补偿,并且其中可以应用自适应运动滤波或者自适应精确滤波(例如AP/AM滤波器)。例如,可以至少部分基于运动数据以及第三修改的预测参考画面或者第四修改的预测参考画面中的至少一个来执行运动补偿,以产生用于预测分区的预测分区数据。处理1300可以将该信息馈送回操作1559,其中每个解码的预测误差分区(例如包含零预测误差分区)可以被增加至对应的预测分区,以产生重建的预测分区。另外,处理中此时可以应用自适应运动滤波或者自适应精确滤波。
[0310] 处理1500可以在操作1579处继续“可选地应用EP滤波器”,其中可以可选地应用增强的预测的分区(例如EP滤波)。在一些示例中,当EP 滤波或者FI/FP滤波两者可用时,可以从编码器系统接收指示符,其向解码器系统表明是否使用增强的预测的分区(例如EP滤波)或者预测的分区数据,作为用于预测分区的选择的预测的分区。
[0311] 处理1500可以在操作1580处继续“可选地应用FI/FP滤波器”,其中可以可选地应用FI/FP滤波(例如融合滤波或者融合改善滤波)。在一些示例中,可以决定是否利用一些形式或者FI/FP滤波器(融合改善滤波/融合滤波)或者不使用FI/FP滤波。当一些形式或者FI/FP滤波器(例如融合滤波或者融合改善滤波)要被应用到选择的预测的分区时,该选择的预测的分区和第二选择的预测的分区可以被组装来产生至少一部分的组装画面。 FI/FP滤波可以被应用来滤波组装画面的部分。关联于FI/FP滤波的FI/FP 滤波参数(例如滤波参数或者融合改善滤波参数)可以被产生并且被发送至熵编码器子系统。
[0312] 处理1500可以经由本文讨论的任何编码器系统来实现。此外,可以对视频数据的任何数量的实例(诸如预测误差数据分区、原始数据分区、或者小波数据等)串行或者并行地重复处理1500。
[0313] 虽然本文的示例处理的实施方式可以包含以示出的顺序示出的所有操作的承担,但本公开不限于此,在各种示例中,本文的示例处理的实施方式可以包含示出的操作的仅子集的承担和/或以不同于示出的顺序。
[0314] 图16是跟据本公开的至少一些实施方式布置的示例视频编码系统1600 的示意图。在示出的实施方式中,视频编码系统1600可以包含成像设备 1601、视频编码器100和/或经由处理单元1620的逻辑电路1650实现的视频编码器、视频解码器200和/或经由处理单元1620的逻辑电路1650实现的视频解码器、天线1602、一个或多个处理器1603、一个或多个存储器存储1604、和/或显示器设备1605。
[0315] 如图所示,成像设备1601、天线1602、处理单元1620、逻辑电路1650、视频编码器100、视频解码器200、处理器1603、存储器存储1604、和/或显示器设备1605能够彼此通信。
如上所述,尽管示出有视频编码器100和视频解码器200这两者,但在各种示例中视频编码系统1600可以包含仅视频编码器100或者仅视频解码器200。
[0316] 如图所示,在一些示例中,视频编码系统1600可以包含天线1602。天线1602可以被配置为传输或接收例如视频数据的编码的比特流。此外,在一些示例中,视频编码系统1600可以包含显示器设备1605。显示器设备 1605可以被配置为呈现视频数据。如图所示,在一些示例中,逻辑电路1650 可以经由处理单元1620来实现。处理单元1620可以包含特定应用集成电路(ASIC)逻辑、图形处理器、通用处理器等。视频编码系统1600还可以包含可选的处理器1603,其可以类似地包含特定应用集成电路(ASIC)逻辑、图形处理器、通用处理器等。在一些示例中,逻辑电路1650可以经由硬件或者视频编码专用的硬件等来实现,并且处理器1603可以实现通用软件或者操作系统等。此外,存储器存储1604可以是任何类型的存储器,诸如易失性存储器(例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等)或者非易失性存储器(例如闪存存储器等)等。在非限制性示例中,存储器存储1604可以由缓存存储器实现。在一些示例中,逻辑电路1650可以访问存储器存储1604(例如对于图像缓冲器的实施方式而言)。在其他示例中,逻辑电路1650和/或处理单元1620可以包含存储器存储(例如缓存等),用于图像缓冲器等的实施方式。
[0317] 在一些示例中,经由逻辑电路实现的视频编码器100可以包含图像缓冲器(例如经由处理单元1620或者存储器存储1604)和图形处理单元(例如经由处理单元1620)。图形处理单元可以通信地耦合至图像缓冲器。图形处理单元可以包含经由逻辑电路1650实现的视频编码器100,以实施相对于图1和图3和图5讨论的各种模块。例如,图形处理单元可以包含熵编码器逻辑电路等。逻辑电路可以被配置为执行本文讨论的各种操作。例如,熵编码器逻辑电路可以被配置为接收第一视频数据和不同类型的第二视频数据用于熵编码;至少部分基于关联于第一视频数据的参数确定对第一视频数据的第一熵编码技术,使得第一熵编码技术至少包括自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术中的一个;使用第一编码技术将第一视频数据熵编码,以产生第一压缩的视频数据;并使用第二编码技术将第二视频数据熵编码,以产生第二压缩的视频数据;并且组装第一压缩的视频数据和第二压缩的视频数据来产生输出比特流。视频解码器200可以以类似的方式来实现。
[0318] 在一些示例中,视频编码系统1600的天线1602可以被配置为接收视频数据的熵编码的比特流。如上所述,比特流可以包含两个或更多个压缩的视频数据类型。视频编码系统1600还可以包含耦合至天线1602并配置为将编码的比特流解码的视频解码器200。例如,视频解码器200可以被配置为将熵编码的比特流分解来确定第一压缩的视频数据和第二压缩的视频数据;对第一压缩的视频数据确定第一熵解码技术,使得第一熵解码技术包括自适应符号运行可变长度编码技术或者自适应代理可变长度编码技术中的至少一个;基于第一熵解码技术将第一压缩的视频数据熵解码,以产生第一视频数据;并且基于第二熵解码技术将第二压缩的视频数据熵解码,以产生第二视频数据;并且解码第一视频数据和第二视频数据来产生视频帧。
[0319] 在实施方式中,本文描述的特征可以响应于由一个或多个的计算机程序产品提供的指令来承担。这样的程序产品可以包含提供指令的信号承载介质,当例如由处理器执行时,指令可以提供本文说明的功能。计算机程序产品可以设置在任何形式的一个或多个机器可读介质中。因此,例如,包含一个或多个处理器核心的处理器可以响应于通过一个或多个机器可读介质运输给处理器的程序代码和/或指令或者指令集,承担本文描述的一个或多个特征。一般而言,机器可读介质可以以程序代码和/或指令或者指令集的形式运输软件,该软件可以使本文描述的任何设备和/或系统实现本文描述的至少部分特征。
[0320] 图17是跟据本公开的至少一些实施方式布置的示例系统1700的示意图。在各种实施方式中,系统1700可以是媒体系统,尽管系统1700不限于该背景。例如,系统1700可以整合到个人计算机(PC)、膝上型计算机、超膝上型计算机、平板计算机、触摸板、便携计算机、手持型计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如智能手机、智能平板计算机或者智能电视)、移动互联网设备(MID)、消息收发设备、数据通信设备、照相机(例如任意拍摄照相机、超大变焦照相机、数字单反(DSLR)照相机)等。
[0321] 在各种实施方式中,系统1700包含耦合至显示器1720的平台1702。平台1702可以从内容设备(诸如内容服务设备1730、或者内容输送设备 1740、或者其他类似的内容源)接收内容。导航控制器1750包括可以被用于例如与平台1702和/或显示器1720交互的一个或多个导航功能。下文进一步具体描述这些部件中的每个。
[0322] 在各种实施方式中,平台1702可以包含芯片组1705、处理器1710、存储器1712、天线1713、存储设备1714、图形子系统1715、应用1716和 /或无线电装置1718的任何组合。芯片组1705可以在处理器1710、存储器 1712、存储设备1714、图形子系统1715、应用1716和/或无线电装置1718 之间提供相互通信。例如,芯片组1705可以包含能够提供与存储设备1714 相互通信的存储适配器(未绘出)。
[0323] 处理器1710可以被实现为复杂指令集计算机(CISC)或者精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核、或者任何其他微处理器或者中央处理单元(CPU)。在各种实施方式中,处理器1710可以是双核处理器、双核移动处理器等。
[0324] 存储器1712可以实现为易失性存储器设备,诸如但是不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、或者静态RAM(SRAM)。
[0325] 存储设备1714可以实现为非易失性存储设备,诸如但是不限于磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附加存储设备、闪存存储器、配有电池的SDRAM(同步DRAM)、和/或可访问网络的存储设备。在各种实施方式中,存储设备1714可以包括如下技术:例如当包含多个硬盘驱动器时,对于有价值的数字媒体增加存储性能增强的保护。
[0326] 图形子系统1715可以执行用于显示的图像(诸如静止图像或者视频) 的处理。图形子系统1715例如可以是图形处理单元(GPU)或者视觉处理单元(VPU)。模拟或者数字接口可以被用于将图形子系统1715与显示器 1720通信地耦合。例如,接口可以是高清晰度多媒体接口、DisplayPort、无线HDMI、和/或无线HD兼容技术中的任一个。图形子系统1715能够被集成到处理器1710或者芯片组1705中。在一些实施方式中,图形子系统 1715可以是通信地耦合至芯片组1705的独立设备。
[0327] 本文描述的图形和/或视频处理技术可以在各种硬件架构中实现。例如,图形和/或视频功能可以被集成在芯片组中。替代地,可以使用独立显卡和/ 或视频处理器。作为又一个实施方式,图形和/或视频功能可以由包括多核处理器的通用处理器提供。在其他实施方式中,该功能可以在消费者电子设备中实现。
[0328] 无线电装置1718可以包含能够使用各种适当的无线通信技术来传输并接收信号的一个或多个无线电装置。该技术可以涉及跨一个或多个无线网络的通信。示例性无线网络包含(但是不限于)无线局域网(WLAN)、无线个人区域网络(WPAN)、无线城域网(WMAN)、蜂窝网络、以及卫星网络。在跨这样的网络的通信中,无线电装置1718可以跟据任何版本的一个或多个应用标准来操作。
[0329] 在各种实施方式中,显示器1720可以包含任何电视类监控器或者显示器。显示器1720例如可以包含计算机显示屏、触摸屏显示器、视频监控器、类似电视的设备、和/或电视。显示器1720可以是数字和/或模拟的。在各种实施方式中,显示器1720可以是全息显示器。另外,显示器1720可以是可以接收视觉投影的透明表面。该投影可以传输各种形式的信息、图像、和/或对象。例如,这样的投影可以是用于移动增强现实(MAR)应用的视觉叠加。在一个或多个软件应用1716的控制下,平台1702可以在显示器 1720上显示用户界面1722。
[0330] 在各种实施方式中,内容服务设备1730可以由任何国内、国际和/或独立服务作为主机,因此,例如经由互联网可访问平台1702。内容服务设备 1730可以耦合至平台1702和/或显示器1720。平台1702和/或内容服务设备1730可以耦合至网络1760来将媒体信息向/从网络1760通信(例如发送和/或接收)。内容输送设备1740还可以被耦合至平台1702和/或显示器 1720。
[0331] 在各种实施方式中,内容服务设备1730可以包含有线电视盒、个人计算机、网络、电话、具有上网功能的设备或者能够输送数字信息和/或内容的家电、以及能够经由网络1760或者直接在内容提供商与平台1702和/显示器1720之间单向或者双向对内容进行通信的任何其他类似的设备。应该理解的是内容可以经由网络1760向/从系统1700中的任何一个部件和内容提供商单向和/或双向通信。内容的示例可以包含任何媒体信息,例如包含视频、音乐、医疗和游戏信息等。
[0332] 内容服务设备1730可以接收诸如有线电视节目表的内容,包含媒体信息、数字信息、和/或其他内容。内容提供商的示例可以包含任何有线或者卫星电视、或者无线电、或者互联网内容提供商。提供的示例不意味着以任何方式限制跟据本公开的实施方式。
[0333] 在各种实施方式中,平台1702可以从具有一个或多个导航功能的导航控制器1750接收控制信号。控制器1750的导航功能例如可以被用于与用户界面1722交互。在各种实施方式中,导航控制器1750可以是指向设备,该指向设备可以是允许用户向计算机输入空间(例如连续和多维)数据的计算机硬件部件(具体而言为人机界面设备)。诸如图形用户界面(GUI)、以及电视和监控器的很多系统允许用户使用物理手势控制并提供数据给计算机或者电视。
[0334] 控制器1750的导航功能的移动可以通过指针光标、聚焦环、或者显示在显示器上的其他视觉指示器的移动复制在显示器(例如显示器1720) 上。例如,在软件应用程序1716的控制下,导航控制器1750中的导航功能例如可以映射至显示在用户界面1722上的虚拟导航功能。在各种实施方式中,控制器1750可能不是分离部件,而是可以集成到平台1702和/或显示器1720。然而,本公开不限于本文示出或者说明的元件或者背景。
[0335] 在各种实施方式中,驱动器(未示出)可以具有例如当启动时在初始引导之后用触摸按钮能使用户立即开启并关掉类似电视的平台1702的技术。甚至当平台被关掉时,程序逻辑也可以允许平台1702将内容流传输至媒体适配器、或者其他内容服务设备1730、或者内容输送设备1740。此外,芯片组1705可以包含例如用于5.1环绕声音频和/或高清7.1环绕声音频的硬件和/或软件支持。驱动器可以包含用于集成图形平台的图形驱动器。在各种实施方式中,图形驱动器可以包括外围部件互连(PCI)Express图形卡。
[0336] 在各种实施方式中,可以将系统1700中示出的任何一个或多个部件集成。例如,可以将平台1702和内容服务设备1730集成,或者可以将平台 1702和内容输送设备1740集成,或者例如可以将平台1702、内容服务设备1730和内容输送设备1740集成。在各种实施方式中,平台1702和显示器1720可以是集成单元。例如可以将显示器1720和内容服务设备1730集成,或者可以将显示器1720和内容输送设备1740集成。这些示例不意味着限制本公开。
[0337] 在各种实施方式中,系统1700可以实现为无线系统、有线系统、或者两者的组合。当实现为无线系统时,系统1700可以包含适于在无线共享介质(诸如一个或多个天线、发射器、接收器、收发器、放大器、滤波器、控制逻辑等)上通信的部件和接口。无线共享的介质的示例可以包含无线频谱的部分、诸如RF频谱等。当实现为有线系统时,系统1700可以包含适于在有线通信介质(诸如输入/输出(I/O)适配器、将I/O适配器与对应的有线通信介质连接的物理连接件、网络接口卡(NIC)、磁盘光盘控制器、视频控制器、音频控制器等)上通信的部件和接口。有线通信介质的示例可以包含线、线缆、金属导线、印制电路板(PCB)、背板、交换结构、半导体材料、双绞线、同轴线缆、光纤等。
[0338] 平台1702可以建立一个或多个逻辑或者物理信道来对信息进行通信。信息可以包含媒体信息和控制信息。媒体信息可以指表现对于用户有意义的内容的任何数据。内容的示例例如可以包含来自声音会话、视频会议、流式视频、电子邮件(email)消息、语音信箱消息、字母数字符号、图形、图像、视频、文本等的数据。来自声音会话的数据例如可以是语音信息、静默时段、背景噪声、舒适噪声音调等。控制信息可以指表现对于自动化系统有意义的命令、指令或者控制字的任何数据。例如,控制信息可以被用于以预定的方式通过系统对媒体信息进行路由,或者指示节点来处理媒体信息。然而,实施例不限于图17示出或者描述的要素或者背景。
[0339] 如上所述,系统1700可以以变化的物理格或者形状因子来实施。图 18示出其中系统1800可以实施的小形状因子设备1800的实施方式。例如,在各种实施方式中,设备1800可以实现为具有无线能的移动计算设备。移动计算设备可以指例如具有处理系统和移动电源或者供电(诸如一个或多个电池)的任何设备。
[0340] 如上所述,移动计算设备的示例可以包含个人计算机(PC)、膝上型计算机、超膝上型计算机、平板计算机、触摸板、便携计算机、手持型计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如智能电话、智能平板计算机或者智能电视)、移动互联网设备(MID)、消息收发设备、数据通信设备、照相机(例如任意拍摄照相机、超大变焦照相机、数字单反(DSLR)照相机)等。
[0341] 移动计算设备示例还可以包含被布置为由人穿戴的计算机,诸如腕上计算机、指上计算机、戒指计算机、眼镜计算机、皮带夹计算机、臂带计算机、内计算机、衣服计算机、以及其他可穿戴计算机。在各种实施例中,例如移动计算设备可以实现为能够执行计算机应用以及声音通信和/或数据通信的智能手机。尽管一些实施例以示例的方式可以描述为具有实现为智能手机的移动计算设备,但可以理解的是也可以使用其他无线移动计算设备来实现其他实施例。实施例不限于该背景。
[0342] 如图18所示,设备1800可以包含外壳1802、显示器1804、输入/输出 (I/O)设备1806和天线1808。设备1800还包含导航功能1812。显示器 1804可以包含用于对移动计算设备适当显示信息的任何适当的显示器单元 1810。I/O设备1806可以包含用于向移动计算设备输入信息的任何适当的 I/O设备。用于I/O设备1806的示例可以包含字母数字键盘、数字小键盘、触摸板、输入键、按钮、开关、摇臂开关、麦克风、扬声器、声音识别设备和软件等。信息还可以通过麦克风(未示出)输入至设备1800。这样的信息可以由声音识别设备(未示出)来数字化。实施例不限于该背景。
[0343] 各种实施例可以使用硬件元素、软件元素、或者两者的组合来实现。硬件元素的示例可以包含处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等)、集成电路、特定应用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列 (FPGA)、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等。软件的示例可以包含软件部件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件中间件、固件、软件模块、例程、子程序、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或者其任何组合。确定是否使用硬件元素和/或软件元素实现了实施例可以跟据任何数量的要素而变化,诸如期望的计算速度、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度、以及其他设计或者性能约束。
[0344] 至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令实现,其代表处理器内的各种逻辑,当由机器读出时,使机器生成执行本文描述的技术的逻辑。这样的代表被称为“IP核心”,可以被存储在有形、机器可读介质中,并供应至各种客户或者制造设施,以载入到实际上制作该逻辑或者处理器的制造机器中。
[0345] 如上所述,本文说明的系统、装置、物品、以及方法与用于视频系统的内容自适应熵编码相关。在一些示例中,本文说明的系统、装置、物品、以及方法与用于视频系统的部分视频帧的模式和参考类型数据的内容自适应熵编码相关。此外,示例包含用于拆分数据(例如拆分)和水平/垂直数据(例如拆分是水平还是垂直拆分)的内容自适应熵编码。例如,拆分数据可以包含拆分位,表明画面的块或者分区是否被进一步拆分。水平/垂直数据可以表明拆分(如果表明时)是水平还是垂直。拆分数据可以持续多个子块(块的拆分部分)等,直至每个块或者子块等不再被拆分。模式数据可以表明块或者分区等正使用哪个模式来对块或者分区进行编码。例如,模式可以包含帧内模式、跳过模式、拆分模式、自动模式、帧间模式、或者多帧模式等,如本文进一步讨论的那样。参考类型数据可以表明某些模式中对于块或者分区的参考帧类型。例如,单个的参考帧可以被用于帧间模式编码,并且2个(或2个以上的)参考帧可以被用于多帧模式编码。
[0346] 在一些示例中,拆分数据、水平/垂直数据、模式数据、以及参考类型数据可以对部分视频帧或者视频帧加载。估计的熵编码位成本可以被确定为用于对拆分数据和模式数据联合编码的熵编码位成本、和用于对水平/垂直数据编码的熵编码位成本的总和(例如,总成本为用于对拆分数据和模式数据联合编码的成本、和对水平/垂直数据编码的成本的总和)。另一个估计的熵编码位成本可以被确定为用于对拆分数据和模式数据分开熵编码位成本、和用于对水平/垂直数据编码的熵编码位成本的总和(例如,总成本为用于对分开编码的拆分数据和模式数据的成本、和对水平/垂直数据编码的成本的总和)。基于位成本,可以对拆分数据和模式数据联合与分开编码之间做出选择,使得使用更低的位成本。基于该选择,拆分数据和模式数据可以被联合或者分开熵编码,并且可以提供联合或者分开编码头部来表明选择的编码方法。此外,水平/垂直数据可以被熵编码,且参考类型数据可以被熵编码。熵编码的拆分数据、模式数据、水平/垂直数据、以及参考类型数据可以输出到比特流,例如由解码器使用。
[0347] 编码的比特流可以被接收并解码,以确定与部分视频帧或者视频帧的拆分数据和模式数据相关联的联合或者分开编码头部。当联合或者分开编码头部表明联合编码时,拆分数据和模式数据可以被联合解码;而当联合或者分开编码头部表明分开编码时被分开解码。水平/垂直数据和参考类型数据还可以从比特流熵解码。可以使用被熵解码的拆分、模式、水平/垂直、以及参考类型数据,如本文所述,与其他被熵解码的数据一起重建视频帧来呈现给用户。
[0348] 如本文所述,编码器模块403(请参考图6)可以接收视频数据413,其可以包含限定视频帧的画面部分的分区的输入数据。编码器模块403可以接收模式和拆分数据635(例如用于联合编码)、模式信息(例如模式) 数据636、以及拆分/非拆分信息(例如拆分)数据637(例如用于分开编码)、和/或预测参考信息(例如参考类型)数据638。编码器模块403还可以接收水平/垂直数据作为模式和拆分数据635或者拆分数据637或者从其分开的部分。此外,如图所示,在一些示例中,数据635、636、637、以及638 可以接收到分开的模块。在一些示例中,视频数据413可以被一起接收到编码器模块403,和/或其他模块构造或者数据结构可以由编码器模块403 使用。尤其是,数据635、636、637、以及638之间重复的任何数据(例如,数据635和636、637之间的拆分数据和模式数据)可以仅由编码器模块403 接收一次。编码器模块403可以分别对拆分和模式数据联合编码以及拆分和模式数据分开编码,确定联合和分开熵编码位成本。编码器模块403可以基于更低的位成本,对拆分和模式数据联合或者分开熵编码,以及对参考类型数据和水平/垂直数据熵编码,如本文进一步讨论的那样。编码器模块403可以将被熵编码的拆分数据、模式数据、水平/垂直数据、以及参考类型数据传输至比特流组装器408,其可以将熵编码的数据写入至比特流 111。
[0349] 如上所述,下一代视频编码可以使用3个画面类型,I-、P-、以及B/F- 画面。图19是依据至少本公开的一些实施方式布置的示例画面构造和预测依赖性1900的示意图。如图所示,画面构造和预测依赖性1900可以包含画面1901,包含I-、P-、和/或B/F-画面。示出的画面还可以排名。例如, I0和P0画面可以是排名为0的画面,F1可以是排名为1的画面,可以对应于第一级别层次,并可以被用作参考(例如,用于对另一个画面编码),F2可以是排名为23
的画面,可以对应于第二级别层次,并可以被用作参考;并且F可以是排名为3的画面,可以对应于第三级别层次,但是可能不被用作参考(例如,没有其他画面取决于该画面)。
[0350] 如上所述,画面可以分割为图块等(例如超片段、最大的编码单元等)。在各种实施方式中,可以采用2个图块尺寸(例如32x32和64x64)。此外,图块可以分割为分区(例如更小的单元)用于预测(例如预测分区)和/或编码(例如编码分区)。在一些示例中,图块的预测分区可以被给予如下6 模式中的一个,其可以在P-和B/F-画面两者中都可用:
[0351] 帧内
[0352] 跳过
[0353] 拆分
[0354] 自动
[0355] 帧间
[0356] 多帧
[0357] 例如,被帧内编码的分区可以被给予帧内模式。既没有提供任何运动矢量也没有任何转换编码的数据的分区可以被给予跳过模式。编码了转换系数但是没有提供运动矢量的分区可以被给予自动模式。需要被进一步分割的分区可以被给予拆分模式(并可以说明作为拆分分区)。最终,具有多个预测参考的分区可以被给予多帧模式。如上所述,每个分区可以提供有如上所述的模式。这样的信息可以被提供为如本文所述的模式数据。此外,对于帧间和多帧模式,参考画面类型可以提供作为参考类型数据。
[0358] 图20是依据至少本公开的一些实施方式布置的示例预测参考画面2000 的示意图。例如,讨论的NGV编码器(例如编码器100和/或解码器200) 可以使用变形的预测参考
2028-2038的组合(例如MR0至3)和/或合成的预测参考2012和2040-2046(例如S0至S3、MR4至7),实现P-画面编码。如上所述,NGV编码可以使用被称为I-画面、P-画面、以及F/B-画面的3 个画面类型。在示出的示例中,要编码的当前画面2010(P-画面)在时间 t=4示出。在编码期间,NGV编码器(例如编码器100和/或解码器200) 的建议的实施方式可以使用4个之前解码的参考R0 2012、R1 2014、R2 2016、以及R3 2018中的一个或多个。不同于可以仅使用这些参考直接用于预测的其他解决方案,NGV编码器(例如编码器100和/或解码器200) 的建议的实施方式可以从这样的之前解码的参考来产生修改的(变形或合成的)参考,进而,至少部分基于这样产生的修改的(变形或合成的)参考,使用运动补偿编码。
[0359] 在一些示例中,NGV编码器(例如编码器100和/或解码器200)的建议的实施方式可以用有效的视频编码算法,将多个部件和由这些部件产生的合成的预测整合。例如,NGV编码器的建议的实施方式可以包含下面特征中的一个或多个:1、增益补偿(例如,场景中增益/亮度改变的明确补偿); 2、模糊补偿(例如,场景中模糊/锐度改变的明确补偿);3、支配性/全局运动补偿(例如,场景中的支配性运动的明确补偿);4、注册补偿(例如,场景中的注册不匹配的明确补偿);5、超分辨率(例如,场景中分辨率精度的改变的明确模式);6、投影(projection)(例如,明确对场景中运动轨道的改变建模);等和/或其组合。
[0360] 在示出的示例中,运动补偿可以应用到当前画面2010(例如,图中标注为P-pic(curr))作为本地解码循环的一部分。在一些实例中,这样的运动补偿可以至少部分基于将来帧(未示出)和/或先前帧R0 2012(例如图中标注为R0)、先前帧R1 2014(例如图中标注为R1)、先前帧R2 2016(例如图中标注为R2)、和/或先前帧R3 2018(例如图中标注为R3)。
[0361] 例如,在一些实施方式中,预测操作可以包含帧间和/或帧内预测。帧间预测可以由一个或多个模块执行,该模块包含变形分析器和产生模块和/ 或合成分析器和产生模块。这样的变形分析器和产生模块可以分析当前画面,以相对于参考帧或者其要编码的帧确定如下参数:模糊的改变2020(例如图中标注为模糊参数)、增益的改变2022(例如图中标注为增益参数)、注册的改变2024(例如图中标注为注册参数)、以及支配性运动的改变2026 (例如图中标注为支配参数)等。
[0362] 确定的变形参数2020、2022、2024、和/或2026可以被用于产生变形的参考帧。这样产生的变形的参考帧可以被存储,并可以用于计算用于当前帧的有效运动(和特性)补偿预测的运动矢量。在示出的示例中,确定的变形参数2020、2022、2024、和/或2026可以被用于产生变形的参考帧,诸如模糊补偿的变形的参考帧2028(例如图中标注为MR3b)、增益补偿的变形的参考帧2030(例如图中标注为MR2g)、增益补偿的变形的参考帧 2032(例如图中标注为MR1g)、注册补偿的变形的参考帧2034(例如图中标注为MR1r)、支配性运动补偿的变形的参考帧2036(例如图中标注为 MR0d)、和/或注册补偿的变形的参考帧2038(例如图中标注为MR0r)等、或者例如其组合。
[0363] 类似地,合成分析器和产生模块可以产生超分辨率(SR)画面2040(例如图中标注为S0(等于先前帧R0 2012)、S1、S2、S3)和投影的插值(PI) 画面2042(例如图中标注为PE)等,用于确定这些帧中有效运动补偿的预测的运动矢量。这样产生的合成的参考帧可以被存储,并可以用于计算用于当前帧的有效运动(和特性)补偿预测的运动矢量。
[0364] 附加地或替代地,确定的变形参数2020、2022、2024、和/或2026可以被用于将产生合成参考帧超分辨率(SR)画面2040和/或投影的插值(PI) 画面2042变形。例如,合成分析器和产生模块可以从确定的注册变形参数 2024,产生变形的注册补偿的超分辨率(SR)画面2044(例如图中标注为 MR4r、MR5r、以及MR6r)、和/或变形的注册补偿的投影的插值(PI)画面2046(例如图中标注为MR7r)等。这样产生的变形以及合成的参考帧可以被存储,并可以用于计算用于当前帧的有效运动(和特性)补偿预测的运动矢量。
[0365] 在一些实施方式中,可以明确计算一组特性的改变(诸如增益、模糊、支配性运动、注册、分辨率精度、运动轨道等,或者例如其组合)。除了本地运动,还可以计算这样的一组特性。在一些情况下,可以适当使用先前的和接下来的画面/片;然而,在其他情况下,这样的一组特性可以更好地从先前的画面/片进行预测。此外,由于在任何估计过程中可能有误差(例如,从多个过去或者多个过去和将来的画面/片),因此可以选择产生最好估计的、与该组特性(诸如增益、模糊、支配性运动、注册、分辨率精度、运动轨道等,或者例如其组合)相关联的修改的参考帧。因此,利用了与该组特性(诸如增益、模糊、支配性运动、注册、分辨率精度、运动轨道、等,或者例如其组合)相关联的修改的参考帧的建议的方法,可以明确补偿这些特性中的差异。建议的实施方式可以解决如何改善预测信号的问题,其反过来允许实现高压缩效率的视频编码。
[0366] 如上所述,模式可以分配给分区。此外,根据模式,参考画面可以用于对分区编码。参考画面可以是之前解码的参考帧(或者画面)、之前解码的变形帧、或者之前解码的合成帧。在一些示例中,可用于编码的可用参考帧或者画面可以取决于正被编码的画面的画面类型和/或正被编码的分区的模式。
[0367] 例如,在用于帧间模式的P-画面的编码中,可以使用9个参考类型:
[0368]No. 帧间模式的P-画面中的参考类型
0. MR0n(=past SR0)(Past_None)
1. MR1n(MRF1_None)
2. MR2n(MRF2_None)
3. MR3n(MRF3_None)
4. MR5n(Past_SR1)
5. MR6n(Past_SR2)
6. MR7n(Past_SR3)
7. MR0d(Past_DMC)
8. MR0g(Past_Gain)
[0369] 表A:帧间模式的P-画面的示例参考类型
[0370] 如表A所述并所示,参考类型数据可以包含用于P-画面的帧间模式块或者分区的参考类型以及针对帧间模式块的参考类型,或者分区可以包含之前解码的帧(MR0n-MR3n,其中“n”意味着没有变形参数)、基于之前解码的超分辨率的帧(MR5n-MR7n和MR0n,其中“n”意味着没有变形参数,并如图所示,MR5n-MR7n和MR0n是过去的超分辨率帧)、之前解码的支配性运动变形帧(MR0d)、或者之前解码的增益变形帧(MR0g)等。
[0371] 例如,在用于多帧模式的P-画面的编码中,第一参考画面可以是之前解码的参考帧(例如,MR0n),并且可以选择第二参考帧,如表B所示:
[0372]
[0373] 表B:多帧模式的P-画面中的示例参考类型
[0374] 如表B所述并所示,参考类型数据可以包含用于P-画面的多帧模式块或者分区的参考类型、以及针对多帧模式块的参考类型,或者分区可以包含第一参考类型,包含之前解码的帧(例如MR0n),并且第二参考类型包含第二之前解码的帧(例如MR1n-MR3n中的一个)。
[0375] 例如,在用于帧间模式的B/F-画面的编码中,可以使用10个参考类型:
[0376]No. 帧间模式的B/F-画面中的参考类型
0. MR0n(=past SR0)(Past_None)
1. MR7n(Proj_None)
2. MR3n(Futr_None)
3. MR1n(MRF1_None)
4. MR4n(Futr_SR1)
5. MR5n(Futr_SR2)
6. MR6n(Futr_SR3)
7. MR0d(Past_DMC)
8. MR3d(Futr_DMC)
9. MR0g/MR3g(Past_Gain,Futr_Gain)
[0377] 表C:帧间模式的B/F-画面的示例参考类型
[0378] 如表C所述并所示,参考类型数据可以包含用于B/F-画面的帧间模式块或者分区的参考类型、以及针对帧间模式块的参考类型,或者分区可以包含之前解码的帧(MR0n,MR3n,MR1n;请注意之前解码的帧可以包含“过去”或者“将来”帧)、投影的参考帧(MR7n)、之前解码的基于超分辨率的帧(MR4n,MR5n,MR6n)、之前解码的支配性运动变形帧(MR0d,MR3d)、或者之前解码的增益变形帧(MR0g,MR3g)。
[0379] 例如,在多帧模式的B/F-画面的编码中,可以提供若干选项。
[0380] 在第一选项中,第一参考画面可以是之前解码的参考帧(例如MR0n),并且第二参考帧可以如表D所示来进行选择:
[0381]
[0382] 表D:多帧模式的P-画面的示例参考类型
[0383] 在第二选项中,第一参考画面可以是之前解码的参考帧(例如MR0n),并且第二参考帧可以是投影的参考帧(例如MR7n(Proj_None))。
[0384] 在第三选项中,第一参考画面可以是之前解码的参考帧(例如 MR3n(Futr_None)),并且第二参考帧可以是投影的参考帧(例如 MR7n(Proj_None))。
[0385] 如表D所述并所示,并如第二和第三选项中说明的那样,参考类型数据可以包含B/F-画面的多帧模式块或者分区的参考类型,并且多帧模式块或者分区的参考类型可以包含第一参考类型,包含之前解码的帧(要么“过去”要么“将来”参考帧;例如MR0n或者MR3n),并且第二参考类型包含第二之前解码的帧(MR1n,MR3n)、基于之前解码的超分辨率的帧 (MR4n,MR5n,MR6n)、投影的参考帧(MR7n)、之前解码的支配性运动变形帧(MR3d)、或者之前解码的增益变形帧(MR3g)。
[0386] 如本文所述,包含模式和参考类型数据的视频数据可以被熵编码。另外如上所述,模式数据可以表明针对视频帧或者部分视频帧的块或者分区的模式。在一些示例中,模式数据可以表明用于块或者分区的6个模式(帧内模式、跳过模式、拆分模式、自动模式、帧间模式、或者多帧模式)中的一个,并且参考类型数据可以表明相对于表A-D和本文别处详细讨论的块或者分区的一个或多个参考画面或者帧类型。
[0387] 图21是示出依据本公开的至少一些实施方式布置的示例处理的流程图。处理2100可以包含由一个或多个操作2102、2104、2106、2108、2110、 2112、和/或2114示出的一个或多个操作、功能或动作。处理2100可以形成下一代视频编码处理的至少一部分。通过非限制性示例,处理2100可以形成由图1的编码器系统100承担的下一代视频编码处理的至少一部分。
[0388] 处理2100可以在操作2102处开始,“加载拆分数据、水平/垂直数据、模式数据、以及参考类型数据”,其中可以加载拆分数据、水平/垂直数据、模式数据和参考类型数据。例如,数据可以由自适应性熵编码器模块110 加载用于处理。如上所述,拆分数据可以包含拆分位,表明视频帧的块或者分区是否被进一步拆分,以及水平/垂直数据表明拆分数据中的每个拆分是否是水平或者垂直拆分。此外,如上所述,模式数据可以包含视频帧的块或者分区的模式。例如,模式数据可以包含下面的模式:帧内模式、跳过模式、拆分模式、自动模式、帧间模式、或者多帧模式。数据可以对视频帧、或者视频帧的一部分(诸如视频帧的片或者其他部分)加载。
[0389] 处理2100可以在操作2104处继续,“针对联合地对拆分数据和模式数据编码以及对水平/垂直数据编码确定估计的熵编码位成本”,可以针对联合地对拆分数据和模式数据的编码以及对水平/垂直数据编码确定估计的熵编码位成本。
[0390] 处理2100可以在操作2106处继续,“针对分开地对拆分数据和模式数据编码以及对水平/垂直数据编码确定估计的熵编码位成本”,其中可以针对分开地对拆分数据和模式数据的编码以及对水平/垂直数据编码确定估计的熵编码位成本。如上所述,估计的熵编码位成本可以对拆分数据和模式数据的联合和分开编码确定。本文下文提供了用于这样的熵编码和位成本的更多细节。例如,当对拆分数据和模式数据分开编码时,拆分数据可以用水平/垂直数据,并且对模式数据(例如,分开)熵编码的成本可以是基于使用6个技术(例如没有预测的VLC、没有预测的VLCS1、没有预测的 VLCS2、具有预测的VLC、具有预测的VLCS1、以及具有预测的VLCS2) 的最小位成本。
[0391] 处理2100可以在操作2108处继续,“基于最低估计的熵编码位成本,在对拆分数据和模式数据联合与分开编码之间选择”,其中可以基于最低估计的熵编码位成本,在对拆分数据和模式数据联合与分开编码之间做出选择。例如,对拆分数据和模式数据联合编码的估计的熵编码位成本、以及对拆分数据和模式数据分开编码的估计的熵编码位成本的最低者可以被用于在对拆分数据和模式数据联合与分开编码之间确定。
[0392] 处理2100可以在操作2110处继续,“对拆分数据和模式数据联合或者分开熵编码,并对水平/垂直数据熵编码”,其中可以基于选择的熵编码方法,对拆分数据和模式数据联合或者分开熵编码,并可以对水平/垂直数据熵编码。
[0393] 处理2100可以在操作2112处继续,“对参考类型数据熵编码”,其中可以对参考类型数据熵编码。例如,帧间参考类型数据(例如针对帧间模式分区的参考类型)可以基于最低位成本方法来熵编码。在一些示例中,用于P-画面的帧间参考类型数据可以基于3个编码技术(例如具有默认预测的VLC、具有修改的默认预测的VLC、以及具有预测的VLC)中的一个来编码,并且B/F-画面的帧间参考类型数据可以基于7个编码技术(例如,具有默认预测的VLC、具有修改的默认预测的VLC、没有预测的VLC、具有预测的VLC、具有预测的VLCS1、具有类默认预测的VLC、以及具有类默认预测的VLCS1)中的一个来编码,如本文进一步讨论的那样。例如,块间参考类型编码技术指示符表明由解码器使用的、可以包含在比特流中的选择的技术。
[0394] 在一些示例中,多帧参考类型数据(例如多帧模式分区的参考类型) 可以基于多块参考类型数据中的多个多帧参考类型(例如,多少多帧参考类型包含在参考类型数据中),通过选择多块参考类型数据的可变长度编码 (VLC)表被熵编码,并基于可变长度编码表对多块参考类型数据编码。
[0395] 处理2100可以在操作2114处继续,“输出包含熵编码的拆分数据、模式数据、水平/垂直数据、以及参考类型数据的比特流”,其中可以输出包含熵编码的拆分数据、模式数据、水平/垂直数据和参考类型数据的比特流。例如,比特流可以由编码器100输出作为输出比特流111。
[0396] 处理2100可以提供编码视频数据的方法,并可以如本文所述,经由视频编码器(诸如编码器100)实现。
[0397] 图22是示出依据本公开的至少一些实施方式布置的示例处理的流程图。处理2200可以包含由一个或多个操作2202、2204、2206、2208、和/ 或2210示出的一个或多个操作、功能或动作。处理2200可以形成下一代视频编码处理的至少一部分。通过非限制性示例,处理2200可以形成由图 2的解码器系统200承担的下一代视频解码处理的至少一部分。
[0398] 处理2200可以开始于操作2202,“接收编码的比特流”,其中可以接收编码的比特流。例如,编码的比特流可以经由解码器(诸如经由解码器200 的自适应性熵解码器202)接收。编码的比特流例如可以包含与拆分数据和模式数据相关联的联合或者分开编码头部、熵编码的拆分数据和熵编码的模式数据(或者联合或者分开编码)、熵编码的水平/垂直数据、熵编码的参考类型数据、块间参考类型编码技术指示符、和/或视频帧的第一块的实际模式事件的索引。
[0399] 处理2200可以在操作2204处继续,“将编码的比特流解码来确定拆分数据和模式数据的联合或者分开编码头部”,其中编码的比特流可以被解码来确定部分视频帧(例如视频帧的片或者其他部分)或者视频帧的、与拆分数据和模式数据相关联的联合或者分开编码头部。例如,联合或者分开编码头部可以表明相关联的拆分数据和模式数据是否被联合或者分开编码。
[0400] 处理2200可以在操作2206处继续,“当联合或者分开编码头部表明联合编码时,将拆分数据和模式数据联合熵解码,并将水平/垂直数据熵解码”,其中当联合或者分开编码头部表明联合编码时,拆分数据和模式数据可以被联合熵解码,并且水平/垂直数据可以被熵解码。
[0401] 处理2200可以在操作2208处继续,“当联合或者分开编码头部表明分开编码时,将拆分数据和模式数据分开熵解码,并将水平/垂直数据熵解码”,其中当联合或者分开编码头部表明分开编码时,拆分数据和模式数据可以被分开熵解码,并且水平/垂直数据可以被熵解码。
[0402] 处理2200可以在操作2210处继续,“将编码的比特流熵解码来确定参考类型数据”,其中编码的比特流可以被熵解码来确定参考类型数据。在一些示例中,对P-画面将帧间参考类型数据解码可以包含确定块间参考类型编码技术指示符,其根据表明如下中的一个的比特流:基于代理可变长度编码(使用默认预测)的编码、基于代理可变长度编码(使用修改的默认预测)的编码、或者基于代理可变长度的编码(使用预测)的编码;并且对B/F-画面将帧间参考类型数据解码可以包含确定块间参考类型编码技术指示符,其根据表明如下中的至少一个的比特流:基于代理可变长度编码 (使用默认预测)的编码、基于代理可变长度编码(使用修改的默认预测) 的编码、基于代理可变长度编码(不使用预测)的编码、基于代理可变长度编码(使用预测)的编码、基于其中用符号运行编码对最频繁符号进行编码的代理可变长度编码(使用预测)的编码、或者基于代理可变长度编码(使用类默认预测)的编码;以及基于表明的技术,将块间参考类型数据(要么P-要么B/F-画面)熵解码。
[0403] 在一些示例中,多帧参考类型数据(例如多帧模式分区的参考类型) 可以基于多块参考类型数据中的多个多帧参考类型(例如,多少多帧参考类型包含在参考类型数据中),通过选择多块参考类型数据的可变长度编码 (VLC)表被熵解码,并基于可变长度编码表对多块参考类型数据解码。这样的处理可以类似于多帧参考类型数据的编码处理。
[0404] 图23是示出依据本公开的至少一些实施方式布置的示例处理的流程图。处理2300可以包含由一个或多个操作2301-2311示出的一个或多个操作、函数或者动作。处理2300可以形成下一代视频编码处理的至少一部分。通过非限制性示例,处理2300可以形成由图1的编码器系统100承担的下一代视频编码处理的至少一部分。
[0405] 处理2300可以在操作2301处开始,“输入数据:拆分(拆分位和H/V 信息)、块模式、块间参考类型、以及多块参考类型”,其中可以加载或输入视频帧或者部分视频帧的拆分数据、水平/垂直数据、模式数据、以及参考类型数据。例如,可以读出帧级模式和拆分。
[0406] 处理2300可以在操作2302处继续,“估计拆分位和模式的联合编码的成本、以及水平/垂直信息的编码的成本”,其中可以确定对拆分数据(例如拆分位)和模式数据联合编码的位成本,并可以确定对水平/垂直数据编码的成本。例如,可以执行如下:将初始级别设定为0(图块级别),收集SM (拆分、模式)掩码:以当前拆分级别的当前帧的拆分和模式,对于SM中的所有拆分收集HV(水平/垂直)信息;如果SM掩码的长度是0或者1,将VLC表索引设定为31;如果SM掩码的长度大于1且拆分级别是0,那么用符号运行估计最常见事件的编码,并用VLC估计剩余;如果SM掩码的长度大于1且拆分级别大于0,那么:估计32个不同VLC表的成本,选择具有最小位的一个,解释(account for)5位VLC索引代码;以当前级别 (编码的位图)解释HV信息,并且如果SM中的增加拆分增加了拆分级别 1,以更高拆分级别重复步骤。
[0407] 处理2300还可以从操作2301在操作2303处继续,其可以由如下2个操作构成:“估计对拆分编码的成本(拆分位和水平/垂直信息)”,并“估计模式编码的成本”。在操作“估计拆分(拆分位和水平/垂直信息)的编码的成本”中,可以确定对拆分数据(例如拆分位)和模式数据分开编码的位成本,并可以确定对水平/垂直数据编码的成本。例如,可以执行下面的步骤来确定对拆分数据分开编码(并另外对水平/垂直数据编码)的成本:将初始级别设定为0(图块水平),收集S掩码:以当前拆分级别拆分当前帧,收集拆分S的HV(水平/垂直)信息,以当前拆分级别估计对拆分(S)编码的成本如下:如果S的长度小于或者等于10,用位图编码S,那么不解释开销,只是S的长度作为估计的成本,否则:估计用位图编码的S的成本,估计用反相符号运行(表1)编码的S的成本,估计用反相代理VLC (表2)编码的S的成本,估计用差异代理VLC(表2)编码的S的成本,选择产生对S编码的位成本最小的方法,并解释选择的方法加方法开销的成本,得到对与HV信息(代理VLC或者位图)最好的编码方法,估计 HV信息的位,并将对S和HV信息估计的位相加作为最终拆分成本估计。
[0408] 在操作“估计模式编码的成本”中,其中可以估计对模式(分开)熵编码的成本。例如,可以估计使用6个技术的熵编码模式的成本:没有预测的VLC、没有预测的VLCS1、没有预测的VLCS2、具有预测的VLC、具有预测的VLCS1、以及具有预测的VLCS2。
[0409] 例如,对于没有预测的实例,可以执行如下。基于没有预测的代理VLC,通过估计运行过所有VLC集合、对每个VLC集合的位进行计数、选择最低成本的VLC集合,并解释选择的VLC索引成本头部,从而估计模式编码的成本。通过估计用符号运行编码来编码最常见事件的成本、从事件集合移除该事件,运行过所有VLC集合,对每个VLC集合进行位计数,选择最低成本的VLC集合,解释选择的VLC索引头部成本,并将符号运行成本和VLC成本相加来得到没有预测符号运行级别1的总估计成本,从而估计没有预测并使用符号运行(级别1)的模式编码的成本(例如,基于其中用符号运行编码对最频繁符号进行编码的代理可变长度编码)。通过估计用符号运行编码来编码最常见事件的成本从事件集合移除该事件、估计用符号运行编码对第二最常见事件编码的成本从事件集合移除该事件,运行过所有VLC集合、对每个VLC集合进行位计数,选择最低成本的VLC集合,解释选择的VLC索引头部成本,并将2个符号运行成本和VLC成本相加来得到没有预测符号运行级别2的总估计成本,从而估计没有预测并使用符号运行(级别2)使用的模式编码的成本(例如,基于其中用符号运行编码对最频繁符号和第二最频繁符号进行编码的代理可变长度编码)。
[0410] 对于具有预测的实例,可以基于邻近模式来创建预测的值模式,并可以执行下面的步骤。基于使用预测编码的代理VLC,通过运行过所有VLC 集合、对每个VLC集合的位进行计数、选择最低成本的VLC集合,并解释选择的VLC索引头部成本,从而估计模式的成本。通过估计用符号运行编码来编码最常见事件的成本、从事件集合移除该事件,运行过所有VLC 集合,对每个VLC集合进行位计数,选择最低成本的VLC集合,解释选择的VLC索引头部成本,并将符号运行成本和VLC成本相加来得到预测符号运行级别1的总估计成本,从而估计基于使用预测代理VLC并使用符号运行(级别1)的模式编码的成本(例如,基于其中用符号运行编码对最频繁符号进行编码的代理可变长度编码)。通过估计用符号运行编码来编码最常见事件的成本从事件集合移除该事件、估计用符号运行编码对第二最常见事件编码的成本从事件集合移除该事件,运行过所有VLC集合、对每个VLC集合进行位计数,选择最低成本的VLC集合,解释选择的VLC索引头部成本,并将2个符号运行成本和VLC成本相加来得到预测符号运行级别2的总估计成本,从而估计基于使用预测代理VLC并使用符号运行(级别2)使用的模式编码的成本(例如,基于其中用符号运行编码对最频繁符号和第二最频繁符号进行编码的代理可变长度编码)。
[0411] 可以确定6个选项的最低位计数,并如果选择了联合编码,选择的方法索引头部(例如分开模式编码技术头部)可以被编码,拆分数据(以及水平/垂直数据)和模式数据可以被熵编码。
[0412] 处理2300可以从操作2302和2303在操作2304处继续,“确定拆分和模式的最好编码,并执行编码”,其中可以确定拆分和模式(以及水平/垂直) 信息的最好编码。例如,在操作2302和2303确定的这些之间的最低位成本可以被用于确定最好编码方法。
[0413] 处理2300还可以从操作2301在决定操作2305处继续,“P-或者B/F- 画面?”,其中可以确定当前帧或者画面是否是P-或者B/F-画面。
[0414] 如图所示,当画面类型是P-画面时,处理2300可以在操作2308处继续,“估计P-画面帧间参考类型的编码的成本”,可以使用如下3个技术来估计对P-画面帧间参考类型数据编码的位成本:具有默认预测的VLC、具有修改的默认预测的VLC、以及具有预测的VLC。例如,可以执行如下。
[0415] 读取块间的帧级参考类型,并计算帧间参考类型的可能事件的数量。
[0416] 通过基于可能事件的数量来选择VLC表,并对于每个参考类型从高达3邻近(例如,邻近块或者分区)参考类型创建预测,解释1位开销来表明预测是否正确;否则如果不正确,使用来自选择的VLC表的码字的长度来解释预测差异,从而基于具有默认预测的代理VLC来估计对参考类型编码的成本。
[0417] 通过基于可能事件的数量来选择VLC表,并对于每个参考类型从高达 3邻近(例如,邻近块或者分区)参考类型创建预测,将1位开销积累到 1d掩码PNP来表明预测是否正确;否则如果不正确,使用来自选择的VLC 表的码字的长度来解释预测差异,估计用代理VLC方法(例如表0、1、2 和3)对PNP掩码编码的成本,选择具有最低成本估计的代理VLC表,并将VLC成本和用选择的代理VLC表编码的PNP掩码的成本相加为最终成本估计,从而基于具有修改的默认预测的代理VLC来估计对参考类型编码的成本。
[0418] 通过基于当前帧的统计来计算参考类型事件的实际的全局排序以在当前帧中估计参考类型事件的全局排序,并将最近顺序G确定为来自从预计算的事件顺序的码书的实际的一个,通过基于可能的参考类型事件的数量来选择VLC表集合来估计参考类型与预测的参考类型之间的编码预测差异的成本,估计选择的集合中每个VLC表的成本,选择具有最小估计的成本的VLC表,并将VLC索引头部成本相加至选择的VLC成本作为总估计,从而估计基于具有预测(例如,全预测或者高级预测)的代理VLC对参考类型编码的成本。
[0419] 基于选择的技术(例如,从默认预测、修改的默认预测和预测(例如全或者高级预测)中具有最低成本的参考类型编码方法),头部可以被编码 (例如,块间参考类型编码技术指示符)且有效载荷可以被熵编码。
[0420] 当画面类型是B/F-画面时,处理2300可以在操作2309处继续,“估计F-画面帧间参考类型的编码的成本”,可以使用如下7个技术来估计对B/F- 画面帧间参考类型数据编码的位成本:具有默认预测的VLC、具有修改的默认预测的VLC、没有预测的VLC、具有预测的VLCS1、具有类默认预测的VLC、以及具有类默认预测的VLCS1。例如,可以执行如下。
[0421] 读取块间的帧级参考类型,计算帧间参考类型的可能事件的数量。
[0422] 通过基于可能事件的数量来选择VLC表,并对于每个参考类型从高达 3邻近(例如,邻近块或者分区)参考类型创建预测,解释1位开销来表明预测是否正确;否则如果不正确,使用来自选择的VLC表的码字的长度来解释预测差异,从而基于具有默认预测的代理VLC来估计对参考类型编码的成本。
[0423] 通过基于可能事件的数量来选择VLC表,并对于每个参考类型从高达 3邻近(例如,邻近块或者分区)参考类型创建预测,将1位开销积累到 1d掩码PNP来表明预测是否正确;否则如果不正确,使用来自选择的VLC 表的码字的长度来解释预测差异,估计用代理VLC方法(表0、1、2和3) 对PNP掩码编码的成本,选择具有最低成本估计的代理VLC表,并将VLC 成本和用选择的代理VLC表编码的PNP掩码的成本相加为最终成本估计,从而基于具有修改的默认预测的代理VLC来估计对参考类型编码的成本。
[0424] 通过估计在没有预测的编码参考类型的VLC表集合中每个VLC表的成本,选择具有最小估计的成本的VLC表,并将VLC索引头部成本的成本相加至选择的VLC成本作为总估计,从而基于没有预测的代理VLC估计编码参考类型的成本。
[0425] 为了使用预测(例如全预测或者高级预测),通过基于当前帧的统计来计算参考类型事件的实际的全局排序,并将最近顺序G确定为来自预计算的事件顺序的码书的实际的一个,并使用G和邻近参考类型来预测参考类型,从而估计当前帧中参考类型事件的全局排序。
[0426] 通过基于可能的参考类型事件的数量选择VLC表集合来估计参考类型与预测的参考类型之间的编码预测差异的成本,估计选择的集合中每个 VLC表的成本,选择具有最小估计的成本的VLC表,并将VLC索引头部成本的成本相加至选择的VLC成本作为总估计,从而基于具有预测的代理 VLC来估计编码参考类型的成本。
[0427] 通过估计参考类型与预测的参考类型之间的编码预测差异的成本,其中通过基于可能的参考类型事件的数量来选择VLC表集合,0的预测差异用符号运行编码来编码,估计具有符号运行的编码零事件对非零事件的成本,从要编码的事件的阵列移除0事件,估计选择的集合中每个VLC表的成本,选择具有最小估计的成本的VLC表,并相加VLC索引头部成本的成本并跳过运行成本到选择的VLC成本作为总成本估计,从而基于具有预测的代理VLCS1(例如,用使用预测的符号运行编码来编码的最频繁符号) 来估计编码参考类型的成本。
[0428] 通过基于可能的参考类型事件的数量来选择VLC表集合,估计选择的集合中每个VLC表的成本,选择具有最小估计的成本的VLC表,并将VLC 索引头部成本的成本相加至选择的VLC成本作为总估计,从而通过使用G 来预测参考类型并使用来自默认方法的预测方法来预测邻近参考类型来基于具有默认预测的代理VLC来估计编码参考类型的成本,估计参考类型与预测的(类默认预测)参考类型之间的编码预测差异的成本。
[0429] 通过估计参考类型与预测的(类默认预测)参考类型之间的编码预测差异的成本,其中通过基于可能的参考类型事件的数量来选择VLC表集合, 0的预测差异用符号运行来编码,估计具有符号运行的编码零事件对非零事件的成本,从要编码的事件的阵列移除0事件,估计选择的集合中每个VLC 表的成本,选择具有最小估计的成本的VLC表,并相加VLC索引头部成本的成本并跳过运行成本到选择的VLC成本作为总成本估计,从而基于具有默认预测的代理VLCS1估计编码参考类型的成本。
[0430] 基于选择的技术(例如,具有最低成本的参考类型编码方法),头部可以被编码(例如块间参考类型编码技术指示符)且有效载荷可以被熵编码。
[0431] 处理2300可以从操作2308或者2309在操作2310处继续,“确定帧间参考类型的最好编码,并执行编码”,可以确定帧间参考类型的最好编码(例如,基于使用说明的技术的最小位成本),且帧间参考类型可以被熵编码。
[0432] 处理2300还可以从操作2301在操作2306处继续,“基于最大数量的多帧参考类型来选择VLC表”,其中可以基于最大数量的多帧参考类型来选择VLC表。例如,可以基于多块参考类型数据中的多个多帧参考类型,选择针对多块参考类型数据的可变长度编码表。在P-画面示例中,可以执行如下:对于多块读出帧级参考类型,对于所有多块收集第二参考类型的 1d阵列,对于第二多参考类型计算可能事件的数量,如果事件的数量小于或者等于2那么选择具有2个事件的表,否则选择具有3个事件的VLC表,并(例如在操作2307处)用来自选择的VLC表的码字将每个多块参考类型事件编码。在B/F-画面示例中,可以执行如下:对于多块读出帧级参考类型和子模式,对于所有子模式是0的多块收集第二参考类型的1d阵列,对于第二多参考类型计算可能事件的数量,根据事件的可能的数量来选择 VLC表集合,估计选择的集合表中每个VLC表的成本,选择具有最低成本的VLC表,并(例如在操作2307中)用来自选择的VLC表的码字将每个多事件编码。
[0433] 处理2300可以在操作2307处继续,“执行多帧参考类型的编码”,其中如上所述,可以使用选择的或者确定的技术将多帧参考类型编码。例如,如相对于操作2306和2307所述,可以基于多块参考类型数据中的多个多帧参考类型选择针对多块参考类型数据的可变长度编码表,且可以基于可变长度编码表将多块参考类型数据编码。
[0434] 处理2300可以从操作2304、2307和2310在操作2311处继续,“输出比特流”,其中说明的熵编码的数据可以输出到比特流。
[0435] 如上所述,模式和参考类型可以被熵编码。例如,建议的熵编码可以基于符号运行编码、代理VLC熵编码和位图(无压缩)编码的组合。接下来,提供符号运行和代理VLC熵编码的细节。
[0436] 符号运行熵编码器可以对常规比特流或者反相比特流(例如,其中0 和1相反)操作。符号运行熵编码器可以(尝试)通过将0的运行编码来将传入比特流压缩。在该方法中,1的每个值以及之前0的运行可以编码作为单个的码字。如果有多于33个连续的0,逃逸(ESC)可以被编码。在1 的最后值被编码之后,可以发送块码字的终止(EOB)。表1示出示例码字和对应的地址(地址-1=先于1的0的运行)、以及大于33的运行和块的终止(EOB)的逃逸(ESC)。
[0437]代码 地址 码长 代码 地址 码长
01 1 2 1011001 18 7
001 2 3 00000001 19 8
111 3 3 10100001 20 8
0001 4 4 10100010 21 8
1001 5 4 00000101 22 8
1100 6 4 10100011 23 8
1101 7 4 10110001 24 8
10101 8 5 101000000 25 9
10111 9 5 000000000 26 9
100000 10 6 000001001 27 9
100011 11 6 101100000 28 9
101101 12 6 000000001 29 9
101001 14 6 101000001 30 9
0000001 14 7 101100001 31 9
1000100 15 7 0000010000 32 10
0000011 16 7 0000010001 33 10
1000101 17 7 100001 ESC 6
- - - 00001 EOB 5
[0438] 表1:符号运行子方法码字
[0439] 代理VLC熵编码器可以将比特流中的每三个位更换为VLC码字。其可以对常规比特流或者反相比特流(例如,其中0和1相反)操作。共同标注为表2的下面的表提供了示例表。
[0440]三位 VLC 码长 三位 VLC 码长
000 00 2 100 101 3
001 010 3 101 110 3
010 011 3 110 1110 4
011 100 3 111 1111 4
[0441]三位 VLC 码长 三位 VLC 码长
000 00 2 100 101 3
001 010 3 101 1111 4
010 011 3 110 100 3
011 1110 4 111 110 3
[0442]三位 VLC 码长 三位 VLC 码长
000 00 2 100 101 3
001 010 3 101 1111 4
010 011 3 110 1110 4
011 100 3 111 110 3
[0443]三位 VLC 码长 三位 VLC 码长
000 00 2 100 101 3
001 010 3 101 1110 4
010 011 3 110 110 3
011 100 3 111 1111 4
[0444]三位 VLC 码长 三位 VLC 码长
000 011 3 100 101 3
001 010 3 101 110 3
010 1111 4 110 1110 4
011 100 3 111 00 2
[0445]三位 VLC 码长 三位 VLC 码长
000 101 3 100 00 2
001 1110 4 101 1111 4
010 011 3 110 010 3
011 100 3 111 110 3
[0446] 表2:代理VLC熵编码器子方法码字
[0447] 除了反相比特流模式外,在VLC编码器的情况下,还可以提供差分比特流模式。在这样的示例中,比特流中的第一位保持原样,而所有其他位被更换为当前位和前一位之间的差分(模2)。一旦创建了差分,VLC编码器可以被应用至差分比特流。
[0448] 如上所述,拆分数据和模式数据可以联合编码或者分开编码。图24是示例P-画面2402的示例拆分和模式2401的示意图,且图25是示例P-画面 2502的示例拆分和模式2501的示意图。图24示出拆分和模式2401,例如 P-画面2402。在图24的示例中,P-画面2402可以具有8的量化器Qp,以及8的画面顺序计数POC。在图25的示例中,P-画面2502可以具有32的量化器Qp,以及8的画面顺序计数POC。例如,P-画面2402和2502可以是足球测试序列的示例画面。相对于图24和25和表3-12讨论的技术可以与P-画面(诸如例如亮度P-画面)的对拆分数据和模式数据编码相关联。
[0449] 在联合编码中,拆分和块模式可以编码作为多条信息,在一起作为事件的集合。例如,在预测树的每个级别处,终止块可以声明作为5个类型中的一个:帧内、跳过、自动、帧间、或者多帧,其中如果块没有在该级别终止,其可以声明为拆分。该方法可能有2个模式(例如,经由1位开销开关表明)。在第一模式(例如简单模式)中,第一级别可以与以下分开编码:用于编码跳过对非跳过模式的符号运行、以及对所有其他事件编码的单个的VLC表。简单模式中的下面级别可以使用固定单个的VLC表来对剩余事件编码。另外在每个级别处,在模式和拆分被编码之后,可以编码有附加的信息,该信息可以确定拆分块应该被水平或者垂直拆分(水平/ 垂直数据或者HV信息)。在方法的简单模式中,HV信息被编码为位图(例如没有压缩)。第二模式(例如,常规模式)可以使用VLC表的集合来以每个级别代表每个事件。另外在每个级别处,在模式和拆分被编码之后,可以编码有附加的信息,该信息可以确定拆分块应该被水平或者垂直拆分 (水平/垂直数据或者HV信息)。在方法的常规模式中,HV信息的编码或者完成作为位图或者用代理VLC完成,结果导致1位开销来表明位图或者代理VLC编码。
[0450] 在分开编码中,所有预测树拆分(例如拆分数据)可以与块模式(例如模式数据)分开,并用多级熵编码器编码。例如,对预测树中的每个级别,编码可以包含积累拆分/非拆分位。例如,如果图块是32x32像素,可能有高达6个水平;并且如果图块是64x64,可能有高达7个水平。用熵编码器(例如基本熵编码器)将每个级别编码。例如,基本熵编码器可以是基于符号运行编码、代理VLC熵编码和位图编码的组合的熵编码器。符号运行编码和代理VLC熵编码可以对常规比特流、反相比特流、或者差分比特流操作,因此导致各种不同子方法(比特流上的符号运行、反相比特流上的符号运行、差分比特流上的符号运行、比特流上的代理VLC、反相比特流上的代理VLC、差分比特流上的代理VLC、以及/或位图编码)。2-3 位切换动作开销可以被用于表明选择的子方法。
[0451] 例如,下面的开销可以被用于在最有效方法之间切换:(1)符号运行 (2)反相比特流上的符号运行、(3)代理VLC编码器、(4)反相比特流上的代理VLC编码器、(5)差分比特流上的代理VLC编码器、以及(6) 位图。
[0452]符号运行子方法 头部 头部码长
位图 00 2
符号运行 01 2
相位图上的符号运行 100 3
代理VLC编码器 101 3
反相比特流上的代理VLC编码器 110 3
差分比特流上的代理VLC编码器 111 3
[0453] 表3:示例熵编码器切换动作开销位
[0454] 例如,在编码块模式的VLC编码(例如模式数据)中,多个VLC组合可以基于统计分析组成。在给定的直方图的情况下,可以选择具有最低位成本的VLC组合,且选择索引可以被编码为头部。然后,每个块模式可以用来自选择的VLC集合的对应的码字编码。下面的表示出实现的示例VLC组合和对应头部。
[0455]
[0456] 表4:P-画面中用于块模式的VLC编码方法中VLC组合和对应头部
[0457] 在一些示例中,为了允许更有效的编码,可以使用VLC编码和符号运行编码的组合。例如,在跳过级别1和VLC方法(例如,基于具有使用符号运行编码来编码的最常见事件的代理VLC来编码)中,最常见事件可以使用符号运行方法来编码,且所有的剩余事件可以用VLC来编码。被用于对最常见事件(级别1事件)编码的符号运行方法可以类似于本文称作基于符号运行的熵编码器或者本文别处的方法。被用于该方法的示例VLC表在下面的表中示出。
[0458]
[0459] 表5:P-画面中用于块模式的跳过级别1和VLC编码方法中的VLC组合和对应头部[0460] 在一些示例中,更有效的是继续并用符号运行编码器(例如第二最频繁事件)对一个附加的事件编码。在跳过级别1和跳过级别2和VLC方法 (例如,基于具有使用符号运行编码来编码的最常见事件和第二最常见事件的代理VLC来编码)中,2个最常见事件可以使用符号运行方法来编码,且所有的剩余事件可以用VLC来编码。再次,被用于对2个最常见事件(级别1和级别2事件)编码的符号运行方法可以类似于本文说明的基于符号运行的熵编码器方法。被用于该方法的示例VLC表在下面的表中示出。
[0461]
[0462] 表6:P-画面中用于块模式的跳过级别1和跳过级别2和VLC编码方法中的VLC组合和对应头部
[0463] 表后的段落
[0464] 如上所述,在对块模式编码中,无论是否有预测都可以做出估计的位成本。例如,块模式经常可以是空间相关的,使得其可以有利地创建空间预测机制以减小位成本。例如,可以使用与当前块的至左、上、左上、以及右上紧邻的之前解码的相邻块的模式来执行预测。
[0465] 在一些示例中,预测可以执行如下。在每个事件处,可以确定(模式) 事件的可能排序。例如,模式事件可以从最有可能到最不可能排序。例如,假定在一些块(或者分区)B处,确定为自动块(索引3)是最有可能,帧内块(索引0)是第二最有可能,块间(索引4)是第三最有可能,多帧(5) 是第四最有可能,跳过(1)是第五最有可能,并且拆分(2)是第六最有可能(例如最不可能)。模式事件的可能排序然后可以被确定为:3,0,4,5,1, 2。
[0466] 如果在块B处的实际事件是帧内(索引0),那么本地可能排序中的帧内事件的索引可以被编码,其在该示例中等于1。另一方面,如果在B处的实际事件确实是自动(索引3)(例如,预料为最有可能事件),那么0的索引可以被编码。在一些示例中,预测(例如事件的可能排序)可以关掉。例如,如果在块B处的事件是跳过(索引1),那么4的索引可以被编码,这是更高的索引值。例如,如果预测是好的,那么需要编码的索引将具有尖峰分布,0是最常见,1是第二最常见,2是第三最常见等。在该方法中, VLC码字分配给基于预测的索引,而非实际事件。
[0467] 例如,在这样的示例中,模式数据(例如模式数据的分开编码)可以包含确定包含从最有可能到最不可能排序的可用模式的模式事件的可能排序,确定在块视频帧处的实际模式事件,并将实际模式事件编码为实际模式事件在模式事件的可能排序中的索引。
[0468] 如上所述,模式事件的可能排序可以被用于对模式数据编码。模式事件的可能排序(例如,模式事件的本地化的可能排序)可以产生如下。在预测之前,事件的最佳适当的全局排序可以从全局工作(例如在整个帧的块)的可能排序的实证导出集合来产生或选择。因此,全局排序可以指在整个帧(或者帧的序列等)中最像模式的统计(直方图)的排序。可以选择最适当的全局排序,并用小VLC来编码。在一些示例中,下面的全局排序(与其VLC代码一起示出)可以可用来从如下当中选择:
[0469]
[0470] 表7:P-画面中模式的发生频率的全局排序、以及块模式的预测的VLC代码
[0471] 在已设定全局排序之后,预测可以对每个事件(例如每个块或者分区) 继续。在已知的(例如,之前编码的/解码的)给定的块或者分区,直接邻近块或者分区的事件可以被标识。例如,直接邻近块可以包含触摸当前块的边界的块。典型地,这样的邻近块可以包含当前的块左、上、左上、有时右上的之前解码的块。标识的事件(例如,在邻近块处发生的事件)形成事件的第一群组,而剩余事件(例如,在邻近事件处不发生的可用事件) 形成第二群组。然后,在每个群组(例如第一群组和第二群组)内,事件根据全局排序被排序。实际的本地化的可能排序然后可以通过将事件的第一和第二群组连接来形成。
[0472] 例如,假设对于给定的帧的全局排序是4,0,1,3,5,2。此外,假定了在块B处,邻近块具有事件自动(索引3)和帧间(索引4)。那么第一群组是(3,4),而第二群组是(0,1,2,5)。每个群组可以通过全局排序来排序,使其分别成为(4,3)和(0,1,5,2)。然后可以经由将第一和第二群组连接为4,3,0,1,5,2,形成对于块B的最终本地化的可能排序。一旦导出了(本地)可能排序,预测被编码为以顺序的实际事件的索引,如上所述。
[0473] 如上所述,在预测方法中,预测索引而不是实际事件(例如模式事件) 可以被编码。例如,索引可以具有更尖峰的分布,并因此能够用VLC更有效编码。下面的表示出这样的情况的示例(Qp=8):
[0474]
[0475] 表8:具有预测(右表)和没有预测(左表)的事件的直方图的比较。在这种情况下,预测更尖峰,产生更好的压缩。
[0476] 预测索引可以通过从可用VLC组合选择最佳适当的VLC组合,像事件那样编码。例如,下面的VLC表可以用说明的方法实现:
[0477]
[0478] 表9:P-画面中用于块模式的预测和VLC编码方法中的VLC组合和对应头部
[0479] 如本文相对于没有预测的示例所述,在使用预测的示例中,更有效的可以是用符号运行编码器(诸如预测、跳过级别1和VLC方法(例如,基于其中用使用预测的符号运行编码对最频繁符号进行编码的代理可变长度编码来编码))对最常见事件(可能预测索引0)编码。使用之前说明的预测,可以对(视频帧或者部分视频帧等的)每个块获得预测索引。类似于非预测情况(例如跳过级别1和VLC),最频繁索引可以隔离,并用如本文所述的基于符号运行的熵编码器来编码。剩余预测索引可以使用多个可用表的最佳可用VLC表编码。例如,下面的VLC表可以用说明的方法实现:
[0480]
[0481]
[0482] 表10:P-画面中用于块模式的预测、跳过级别1和VLC编码方法中的VLC 组合和对应头部
[0483] 在一些示例(正如没有预测的示例)中,更有效的可以是继续并用符号运行编码器(例如第二最频繁事件)对一个附加的预测索引编码。在预测的示例中,跳过级别1和跳过级别2和VLC方法(例如,基于其中用使用预测的符号运行编码对最频繁符号和第二最频繁符号进行编码的代理可变长度编码来编码),2个最常见预测索引(例如,事件)可以使用符号运行编码来编码,而剩余索引(例如事件)可以用VLC编码来编码。符号运行方法可以类似于或者与本文说明的基于符号运行的熵编码相同。例如,下面的VLC表可以用说明的方法实现:
[0484]
[0485] 表11:P-画面中用于块模式的预测、跳过级别1和跳过级别2和VLC编码方法中的VLC组合和对应头部
[0486] 如上所述,为了得到最有效编码成本,可以选择上述方法中最好的(例如产生最小位成本的一个),且开关信息可以编码作为开销。例如,编码模式数据可以基于最低位成本,且比特流可以包含联合或者分开编码头部和/ 或表明选择的编码技术的分开模式数据编码技术指示符。例如,下面的头部可以在解码器处被用于切换至选择的方法:
[0487]方法 头部代码 头部码长
联合拆分和模式 0 1
仅VLC 100 3
跳过级别1和VLC 101 3
跳过级别1、跳过级别2和VLC 1100 4
预测和VLC 1101 4
预测、跳过级别1和VLC 1110 4
预测、跳过级别1和跳过级别2、和VLC 1111 4
[0488] 表12:P-画面中用于对块模式编码的用于切换选择的方法的头部
[0489] 如上所述,拆分数据和模式数据可以联合编码或者分开编码。图26是示例B/F-画面2602的示例拆分和模式2601的示意图,且图27是示例B/F- 画面2702的示例拆分和模式2701的示意图。图26示出拆分和模式2601,例如B/F-画面2602。在图26的示例中,B/F-画面
2602可以具有8的量化器Qp,以及4的画面顺序计数POC。在图27的示例中,B/F-画面2702可以具有32的量化器Qp,以及4的画面顺序计数POC。例如,F-画面2602 和2702可以是足球测试序列的示例画面。相对于图26和27和表13-21讨论的技术可以与B/F-画面(诸如例如亮度B/F-画面)对拆分数据和模式数据编码关联。
[0490] 如相对于P-画面所述,在对B/F-画面联合编码中,拆分和块模式可以编码作为多条信息,在一起作为事件的集合。例如,在预测树的每个级别处,终止块可以声明作为5个类型中的一个:帧内、跳过、自动、帧间或者多帧,其中如果块没有在该级别终止,其可以声明为拆分。该方法可能有2个模式(例如,经由1位开销开关表明)。在第一模式(例如简单模式) 中,第一级别可以与被用于对跳过对非跳过模式编码的符号运行、以及对所有其他事件编码的单个的VLC表分开编码。简单模式中的下面级别可以使用固定单个的VLC表来对剩余事件编码。另外在每个级别处,在模式和拆分被编码之后,可以编码有附加的信息,该信息可以确定拆分块应该被水平或者垂直拆分(水平/垂直数据或者HV信息)。在方法的简单模式中, HV信息被编码为位图(例如没有压缩)。第二模式(例如,规律模式)可以使用VLC表的集合来以每个级别代表每个事件。另外在每个级别处,在模式和拆分被编码之后,可以编码有附加的信息,该信息可以确定拆分块应该被水平或者垂直拆分(水平/垂直数据或者HV信息)。在方法的常规模式中,HV信息的编码或者完成作为位图或者用代理VLC完成,结果导致 1位开销来表明位图或者代理VLC编码。
[0491] 另外如相对于P-画面所述,在对B/F-画面分开编码中,所有预测树拆分(例如拆分数据)可以与块模式(例如模式数据)分开,并用多级熵编码器编码。例如,对预测树中的每个级别,编码可以包含积累拆分/非拆分位。例如,如果图块是32x32像素,可能有高达6个水平;并且如果图块是64x64,可能有高达7个水平。用熵编码器(例如基本熵编码器)将每个级别编码。例如,基本熵编码器可以是基于符号运行编码、代理VLC熵编码和位图编码的组合的熵编码器。符号运行编码和代理VLC熵编码可以对常规比特流、反相比特流、或者差分比特流操作,因此导致各种不同子方法(比特流上的符号运行、反相比特流上的符号运行、差分比特流上的符号运行、比特流上的代理VLC、反相比特流上的代理VLC、差分比特流上的代理VLC、以及/或位图编码)。2-3位开关动作开销可以被用于表明选择的子方法。
[0492] 例如,开销可以被用于在最有效方法之间切换:(1)符号运行(2)反相比特流上的符号运行、(3)代理VLC编码器、(4)反相比特流上的代理 VLC编码器、(5)差分比特流上的代理VLC编码器、以及(6)位图,如相对于表3所示。
[0493] 例如,在编码块模式的VLC编码(例如模式数据)中,多个VLC组合可以基于统计分析组成。在给定的直方图的情况下,可以选择具有最低位成本的VLC组合,且选择索引可以被编码为头部。然后,每个块模式可以用来自选择的VLC集合的对应的码字编码。下面的表示出实现的示例 VLC组合和对应头部。
[0494]
[0495] 表13:B/F-画面中用于块模式的仅VLC编码方法中的VLC组合和对应头部
[0496] 在一些示例中,为了允许更有效的编码,可以使用VLC编码和符号运行编码的组合。例如,在跳过级别1和VLC方法(例如,基于具有使用符号运行编码来编码的最常见事件的代理VLC来编码)中,最常见事件可以使用符号运行方法来编码,且所有的剩余事件可以用VLC来编码。被用于对最常见事件(级别1事件)编码的符号运行方法可以类似于本文称作基于符号运行的熵编码器或者本文别处的方法。被用于该方法的示例VLC表在下面的表中示出。
[0497]
[0498] 表14:B/F-画面中用于块模式的跳过级别1和VLC编码方法中的VLC组合和对应头部
[0499] 在一些示例中,更有效的是继续并用符号运行编码器(例如第二最频繁事件)对一个附加的事件编码。在跳过级别1和跳过级别2和VLC方法 (例如,基于具有使用符号运行编码来编码的最常见事件和第二最常见事件的代理VLC来编码)中,2个最常见事件可以使用符号运行方法来编码,且所有的剩余事件可以用VLC来编码。再次,被用于对2个最常见事件(级别1和级别2事件)编码的符号运行方法可以类似于本文说明的基于符号运行的熵编码器方法。被用于该方法的示例VLC表在下面的表中示出。
[0500]
[0501] 表15:B/F-画面中用于块模式的跳过级别1和跳过级别2和VLC编码方法中的VLC组合和对应头部
[0502] 如上所述,在对块模式编码中,无论是否有预测都可以做出估计的位成本。例如,块模式经常可以是空间相关的,使得其可以有利地创建空间预测机制以减小位成本。例如,可以使用与当前块的至左、上、左上、以及右上紧邻的之前解码的相邻块的模式来执行预测。
[0503] 在一些示例中,预测可以执行如下,如相对于P-画面所述的那样:在每个事件处,可以确定事件的可能排序(例如,模式事件可以从最有可能到最不可能排序)。如上所述,在块处的实际事件可以基于其在事件的顺序中的索引被编码,且VLC码字可以分配给基于预测的索引而非实际事件。例如,在这样的示例中,模式数据(例如模式数据的分开编码)可以包含确定包含从最有可能到最不可能排序的可用模式的模式事件的可能排序,确定在块视频帧处的实际模式事件,并将实际模式事件编码为实际模式事件在模式事件的可能排序中的索引。
[0504] 如上所述,模式事件的可能排序可以被用于对模式数据编码。模式事件的可能排序(例如,模式事件的本地化的可能排序)可以产生如下,如上相对于P-画面所述的那样:在预测之前,事件的最佳适当的全局排序可以从全局工作(例如在整个帧的块)的可能排序的实证导出集合来产生或选择,例如,可以选择最适当的全局排序,并用小VLC编码。在一些示例中,下面的全局排序(与其VLC代码一起示出)可以可用来从如下当中选择:
[0505]索引 全局排序 VLC码字
0 410352 0000
1 401532 0001
2 401352 0010
3 041352 0011
4 415302 0100
5 413502 0101
6 415032 0110
7 145302 0111
8 413052 1000
9 451302 1001
10 405132 1010
11 405312 1011
12 410532 1100
13 431052 1101
14 451032 11100
15 140352 11101
16 143502 11110
17 154302 11111
[0506] 表16:B/F-画面中用于块模式的预测的全局排序和VLC代码
[0507] 如上所述,在已设定全局排序之后,预测可以对每个事件(例如每个块或者分区)继续。在已知的(例如,之前编码的/解码的)给定的块或者分区,直接邻近块或者分区的事件可以被标识。例如,直接邻近块可以包含触摸当前块的边界的块。典型地,这样的邻近块可以包含当前的块左、上、左上、有时右上的之前解码的块。标识的事件(例如,在邻近块处发生的事件)形成事件的第一群组,而剩余事件(例如,在邻近事件处不发生的可用事件)形成第二群组。然后,在每个群组(例如第一群组和第二群组)内,事件根据全局排序被排序。实际的本地化的可能排序然后可以通过将事件的第一和第二群组连接来形成。
[0508] 如上所述,在预测方法中,预测索引而不是实际事件(例如模式事件) 可以被编码。例如,索引可以具有更尖峰的分布,并因此能够用VLC更有效编码。下面的表示出这样的情况的示例(Qp=8):
[0509]
[0510] 表17:具有预测(右表)和没有预测(左表)的事件的直方图的比较。在这种情况下,预测更尖峰,产生更好的压缩。
[0511] 预测索引可以通过从可用VLC组合选择最佳适当的VLC组合,像事件那样编码。例如,下面的VLC表可以用说明的方法实现:
[0512]
[0513] 表18:F-画面中用于块模式的预测和VLC编码方法中的VLC组合和对应头部
[0514] 如本文相对于没有预测的示例所述,在使用预测的示例中,更有效的可以是用符号运行编码器(诸如预测、跳过级别1和VLC方法(例如,基于其中用使用预测的符号运行编码对最频繁符号进行编码的代理可变长度编码来编码))对最常见事件(可能预测索引0)编码。使用之前说明的预测,可以对(视频帧或者部分视频帧等的)每个块获得预测索引。类似于非预测情况(例如跳过级别1和VLC),最频繁索引可以隔离,并用如本文所述的基于符号运行的熵编码器来编码。剩余预测索引可以使用多个可用表的最佳可用VLC表编码。例如,下面的VLC表可以用说明的方法实现:
[0515]
[0516] 表19:B/F-画面中用于块模式的预测、跳过级别1和VLC编码方法中的 VLC组合和对应头部
[0517] 在一些示例(正如没有预测的示例)中,更有效的可以是继续并用符号运行编码器(例如第二最频繁事件)对一个附加的预测索引编码。在预测的示例中,跳过级别1和跳过级别2和VLC方法(例如,基于其中用使用预测的符号运行编码对最频繁符号和第二最频繁符号进行编码的代理可变长度编码来编码),2个最常见预测索引(例如,事件)可以使用符号运行编码来编码,而剩余索引(例如事件)可以用VLC编码来编码。符号运行方法可以类似于或者与本文说明的基于符号运行的熵编码相同。例如,下面的VLC表可以用说明的方法实现:
[0518]
[0519] 表20:B/F-画面中用于块模式的预测、跳过级别1和跳过级别2和VLC编码方法中的VLC组合和对应头部
[0520] 如上所述,为了得到最有效编码成本,可以选择上述方法中最好的(例如产生最小位成本的一个),且开关信息可以编码作为开销。例如,编码模式数据可以基于最低位成本,且比特流可以包含联合或者分开编码头部和/ 或表明选择的编码技术的分开模式数据编码技术指示符。例如,下面的头部可以在解码器处被用于切换至选择的方法:
[0521]方法 头部代码 头部码长
联合拆分和模式 0 1
仅VLC 100 3
跳过级别1和VLC 101 3
跳过级别1、跳过级别2和VLC 1100 4
预测和VLC 1101 4
预测、跳过级别1和VLC 1110 4
预测、跳过级别1和跳过级别2、和VLC 1111 4
[0522] 表21:B/F-画面中用于对块模式编码的用于切换选择的方法的头部
[0523] 如上所述,块间参考类型数据可以通过选择最低位成本编码方法(例如,从P-画面的3个方法和从B/F-画面的7个方法)来编码,并使用选择的编码方法对块间参考类型数据编码。图28是示例P-画面2802的示例块间参考类型2801的示意图,且图29是示例P-画面2902的示例块间参考类型2901的示意图。图28示出块间参考类型2801,例如P-画面2802。在图 28的示例中,P-画面2802可以具有8的量化器Qp,以及8的画面顺序计数POC。在图29的示例中,P-画面2902可以具有32的量化器Qp,以及8 的画面顺序计数POC。例如,P-画面2802和
2902可以是足球测试序列的示例画面。相对于图28和29和表22-30讨论的技术可以与P-画面的块间参考类型数据关联。
[0524] 如上所述,在一些示例中,在P-画面的块间参考类型数据的编码中,可以评价3个方法:基于使用默认预测的代理可变长度编码来编码;基于使用修改的默认预测的代理可变长度编码来编码;和基于使用预测的代理可变长度编码的编码。在其他示例中,可以评价3个不同方法和/或可以评价更多方法。下面的讨论中讨论了各种编码方法,其中的任何或者全部可以被评价来确定最有效的编码技术。
[0525] 例如,默认预测可以包含简化的基于预测的方法。例如,事件的频率可以被假定为是减少顺序,使得可以简化预测和VLC分配的任务。在这样的方法中,可以通过检查当前块的相邻(例如当前块的上、左、以及左上相邻)来执行预测。预测方法可以对当前块选择单个的预测值。如果块的预测值和实际值相等,可以花费1位(例如0)来发出预测是成功的信号。如果预测不成功,那么在1位的开销(例如1)之后,VLC可以被选择来代表该块的实际值。要注意的是,此处,对于实际值的可能值的数量可以少一个,因为预测的值可以从可能事件的集合丢弃。例如,可能使用了4 个VLC表,且切换动作可以基于帧索引自动执行如下:
[0526]
[0527]
[0528] 表22:在P-画面参考类型编码中用于对基于预测的事件编码的VLC代码
[0529] 在修改的默认预测中,可以使用类似的方法,但是表明预测是否正确的开销位可以收集到位掩码,其可以使用具有选择的表的代理VLC被编码。
[0530] 在一些示例中,可以评价和/或使用对块间参考类型数据编码的仅VLC 方法。例如,在仅VLC方法中,多个VLC组合可以基于统计分析组成。在给定的直方图的情况下,可以选择具有最低位成本的VLC组合,且选择索引可以被编码为头部。在这样的示例中,每个参考类型可以用来自选择的VLC集合的对应的码字编码。下面的表示出实现的示例VLC组合和对应头部:
[0531]
[0532] 表23:P-画面中用于块间参考类型的仅VLC编码方法中的VLC组合和对应头部
[0533] 在一些示例中,可以评价和/或使用对块间参考类型数据编码的跳过级别1和VLC方法(例如,基于其中用符号运行编码对最频繁符号进行编码的代理可变长度编码被编码)。例如,为了允许更有效的编码,可以使用 VLC编码和符号运行方法(例如跳过级别1和VLC方法),使得最常见事件使用符号运行方法被编码,且所有的剩余事件用VLC被编码。被用于对最常见事件(例如级别1事件)编码的符号运行方法可以类似于之前说明的、包含基于符号运行的熵编码方法的方法。被用于该方法的示例VLC表示出如下:
[0534]
[0535] 表24:P-画面中用于块间参考类型的、跳过级别1和VLC编码方法中的 VLC组合和对应头部
[0536] 在一些示例中,可以使用预测(例如,全预测或者高级预测)。例如,块间参考类型经常可以是空间相关的,使得其可以有利地创建空间预测机制以减小位成本。例如,可以使用与当前块的至左、上、左上、以及右上紧邻的之前已知的(例如之前解码的)解码的相邻块的模式或者参考类型来执行预测。
[0537] 例如,预测可以执行如下。在每个事件处,导出事件的可能排序,例如事件可以从最有可能到最不可能排序。例如,假定了在一些块间B处,推断过去SR2参考类型(索引3)是最有可能,然后过去P参考类型(索引0)是第二最有可能,然后过去SR3参考类型(索引4)、然后过去GMC (5)、过去过去P(1)、过去SRI(2)、以及过去增益(6)(那么过去增益事件是最不可能)。该示例给处3、0、4、5、1、2、6的可能排序。如果在块B处的实际的事件是过去P(索引0),那么本地可能排序中的过去P事件的索引可以被索引,其在该示例中等于1。如果在B处的实际事件确实是过去SR2(索引3),其被预料为最有可能事件,那么可以编码0的索引。如果预测更不精确,例如如果在B处的事件是过去增益(索引6),那么可以编码6,这是更高的索引值。如果预测是精确的,那么需要被编码的索引将具有尖峰分布,0是最常见,1是第二最常见,2是第三最常见等。因此,在该方法中,VLC码字可以分配给基于预测的索引,而非实际事件。
[0538] 在每个事件处的本地化的可能排序可以确定如下。在预测之前,最佳适当的全局排序可以从全局工作(例如在整个帧的块)的可能排序的实证导出集合来确定或选择。本文使用的全局排序可以指在整个帧中最像模式的统计(直方图)的排序。可以选择最适当的全局排序,并用小VLC来编码。下面提供的示例全局排序(与其VLC代码一起示出)可以从如下中选择:
[0539]索引 全局排序 VLC码字
0 045678123 0000
1 045671283 0001
2 045617823 0010
3 045176823 0011
4 056472183 01000
5 056471238 01001
6 057486132 01010
7 051438627 01011
8 015487623 01100
9 021584673 01101
10 025431678 01110
11 058147623 01111
12 210586473 10000
13 035182467 10001
14 015724863 10010
15 104567823 10011
16 025146783 10100
17 074561832 10101
18 075648123 10110
19 014576823 10111
20 201465873 11000
21 071483526 11001
22 075418623 11010
23 210465873 11011
24 014576823 11100
25 074256813 11101
26 705284613 11110
27 045678123 11111
[0540] 表25:P-画面中用于块间参考类型的预测的全局排序和VLC代码
[0541] 一旦已确定或选择了全局排序,预测可以对每个事件(块)继续。例如,在给定的块,可以标识直接邻近块的所有已知的(例如之前编码的/解码的)事件。直接邻近块可以指触摸当前块的边界的块。例如,这些邻近块可以包含当前块的左、上、左上、有时右上的已知的块。标识的事件(例如,在邻近块处发生的事件)可以形成事件的第一群组,而剩余事件(例如,在邻近块处不发生的事件)形成第二群组。在每个群组内,事件可以根据全局排序被排序。实际的本地化的可能排序然后可以通过将排序的第一和第二群组连接来形成。例如,假设对于给定的帧的全局顺序是4、0、1、 3、5、2、6。假定在块B处,邻近块具有事件过去SR2(索引3)和过去 SR3(索引4)。然后第一群组是(3、4),而第二群组是(0、1、2、5、6)。每个群组然后可以通过全局排序来排序,使其分别成为(4、3)和(0、1、 5、2)。因此,对于块B的最终本地化的可能排序是4、3、0、1、5、2、6。一旦确定了本地可能排序,预测可以编码作为该顺序中实际事件的索引,如上所述。
[0542] 如上所述,在预测方法中,预测索引可以被编码,而非实际事件。索引经常具有更尖峰的分布,并因此能够用VLC更有效编码。通过从可用 VLC组合来选择最佳适当的VLC组合,预测索引可以像事件那样被编码。例如,下面的VLC表可以用方法实现:
[0543]
[0544] 表26:P-画面中用于块间参考类型的预测和VLC编码方法中的VLC组合和对应头部[0545] 在一些示例中,可以用跳过级别1编码和VLC(例如,基于其中用符号运行编码对最频繁符号进行编码的代理可变长度编码被编码)来使用预测(例如,全或者高级预测)。在一些示例中,更有效的可以是用符号运行编码器对最常见事件(可能是预测索引0)编码。例如,预测、跳过级别1 和VLC方法可以使用上述预测来在每个块处获得预测索引。最频繁索引可以用符号运行编码(诸如本文说明的基于符号运行的熵编码器)隔离并编码,且剩余预测索引可以使用最佳可用VLC表被编码。例如,下面的VLC 表可以用该方法实现:
[0546]
[0547] 表27:P-画面中用于块间参考类型的预测、跳过级别1和VLC编码方法中的VLC组合和对应头部
[0548] 如上所述,在一些示例中,可以使用默认预测。默认预测可以用VLC (例如,基于使用默认预测的代理可变长度编码的编码)使用。对于这样的方法而言,可以提供示例VLC组合和关联的VLC头部,如下面表示出的那样:
[0549]
[0550] 表28:P-画面中用于块间参考类型的默认预测和VLC编码方法中的VLC 组合和对应头部
[0551] 在一些示例中,可以用跳过级别1和VLC(例如,基于其中用符号运行编码对最频繁符号进行编码的代理可变长度编码的编码)来使用默认预测。对于这样的方法而言,可以提供示例VLC组合和关联的VLC头部,如下面表示出的那样:
[0552]
[0553] 表29:P-画面中用于块间参考类型的默认预测、跳过级别1和VLC编码方法中的VLC组合和对应头部
[0554] 为了提供最有效编码成本,可以选择任何或者所有说明中最好的用来评价。例如,为了实施方式的简化,可以仅评价一些说明的方法。在其他实施方式中,可以评价所有说明的方法。在任何情况下,选择的方法可以经由开销(诸如块间参考类型编码技术指示符等)表明。下面的表提供当7 个技术可用来使用时使用的示例头部:
[0555]方法 头部代码 头部码长
默认方法 0 1
仅VLC 100 3
跳过级别1和VLC 101 3
预测和VLC 1100 4
预测、跳过级别1和VLC 1101 4
默认预测和VLC 1110 4
默认预测、跳过级别1和VLC 1111 4
[0556] 表30:P-画面中用于对块间参考类型编码的切换选择的方法的头部
[0557] 如上所述,块间参考类型数据可以通过选择最低位成本编码方法(例如,从P-画面的3个方法和从B/F-画面的7个方法)被编码,并使用选择的编码方法对块间参考类型数据编码。图30是示例B/F-画面3002的示例块间参考类型3001的示意图,且图31是示例B/F-画面3102的示例块间参考类型3101的示意图。图30示出块间参考类型3001,例如B/F-画面3002。在图30的示例中,B/F-画面302可以具有8的量化器Qp。在图31的示例中,B/F-画面
3102可以具有32的量化器Qp。例如,B/F-画面3002和3102 可以是足球测试序列的示例画面。相对于图30和31和表21-38讨论的技术可以与P-画面的块间参考类型数据关联。
[0558] 如上所述,在一些示例中,在B/F-画面的块间参考类型数据的编码中,可以评价7个方法:基于使用默认预测的代理可变长度编码来编码,基于使用修改的默认预测的代理可变长度编码来编码,基于不使用预测的代理可变长度编码来编码,基于使用预测的代理可变长度编码的编码,基于其中用使用预测的符号运行编码对最频繁符号进行编码的代理可变长度编码来编码,基于使用类默认预测的代理可变长度编码来编码,和基于其中使用类默认预测用符号运行编码对最频繁符号进行编码的代理可变长度编码来编码。在其他示例中,可以评价说明的方法的子集和/或可以评价更多方法。
[0559] 例如,默认预测可以包含简化的基于预测的方法。例如,事件的频率可以被假定为是减少顺序,使得可以简化预测和VLC分配的任务。在这样的方法中,可以通过检查当前块的相邻(例如当前块的上、左、以及左上相邻)来执行预测。预测方法可以对当前块选择单个的预测值。如果块的预测值和实际值相等,可以花费1位(例如0)来发出预测是成功的信号。如果预测不成功,那么在1位的开销(例如1)之后,VLC可以被选择来代表该块的实际值。要注意的是,此处,对于实际值的可能值的数量可以少一个,因为预测的值可以从可能事件的集合丢弃。例如,可能使用了2 个VLC表,且切换动作可以基于帧索引自动执行,如下:
[0560]
[0561] 表31:B/F-帧参考类型编码中用于对基于预测的事件编码的VLC代码
[0562] 在修改的默认预测中,可以使用类似的方法,但是表明预测是否正确的开销位可以收集到位掩码,其可以使用具有选择的表的代理VLC被编码。
[0563] 在一些示例中,可以评价和/或使用对块间参考类型数据编码的仅VLC 方法(例如,基于不使用预测的代理可变长度编码进行编码)。例如,在仅 VLC方法中,多个VLC组合可以基于统计分析组成。在给定的直方图的情况下,可以选择具有最低位成本的VLC组合,且选择索引可以被编码为头部。在这样的示例中,每个参考类型可以用来自选择的VLC集合的对应的码字编码。下面的表示出实现的示例VLC组合和对应头部:
[0564]
[0565] 表32:B/F-画面中用于块间参考类型的仅VLC编码方法中的VLC组合和对应头部[0566] 在一些示例中,可以使用预测(例如,全预测或者高级预测)。例如,如上所述,块间参考类型经常可以是空间相关的,使得其可以有利地创建空间预测机制以减小位成本。例如,可以使用与当前块的至左、上、左上、以及右上紧邻的之前已知的(例如之前解码的)解码的相邻块的模式或者参考类型来执行预测。
[0567] 例如,预测可以执行如下。在每个事件处,可以导出事件的可能排序,例如事件可以从最有可能到最不可能排序,实际事件可以编码作为其在事件的排序中的索引,如本文所述。因此,在该方法中,VLC码字可以分配给基于预测的索引,而非实际事件。
[0568] 如上所述,在每个事件处的本地化的可能排序可以确定如下。在预测之前,最佳适当的全局排序可以从全局工作的可能排序的实证导出集合来确定或选择。本文使用的全局排序可以指在整个帧中最像模式的统计(直方图)的排序。可以选择最适当的全局排序,并用小VLC来编码。下面提供的示例全局排序(与其VLC代码一起示出)可以从如下中选择:
[0569]索引 全局排序 VLC码字
0 0192746853 0000
1 2105946873 0001
2 1302579468 00100
3 2158640397 00101
4 0912584763 00110
5 2051498673 00111
6 2014596837 01000
7 2510943768 01001
8 0124567983 01010
9 0142659783 01011
10 0215694873 01100
11 0129645783 01101
12 1092574683 01110
13 0291475683 01111
14 1205879463 10000
15 3107294568 10001
16 2150467983 10010
17 0219574368 10011
18 2501349678 10100
19 1203459678 10101
20 1097524683 10110
21 1572986043 10111
22 1507246983 11000
23 0192465873 11001
24 0195287463 11010
25 2154807963 11011
26 1052764893 11100
27 0124576398 11101
28 4102785693 11110
29 1026549783 11111
[0570] 表33:B/F-画面中用于块间参考类型的预测的全局排序和VLC代码
[0571] 一旦已确定或选择了全局排序,预测可以对每个事件(块)继续。例如,在给定的块,可以标识直接邻近块的所有已知的(例如之前编码的/解码的)事件。直接邻近块可以指触摸当前块的边界的块。例如,这些邻近块可以包含当前块的左、上、左上、有时右上的已知的块。标识的事件(例如,在邻近块处发生的事件)可以形成事件的第一群组,而剩余事件(例如,在邻近块处不发生的事件)形成第二群组。在每个群组内,事件可以根据全局排序被排序。实际的本地化的可能顺序然后可以通过将排序的第一和第二群组连接来形成。
[0572] 如上所述,在预测方法中,预测索引可以被编码,而非实际事件。索引经常具有更尖峰的分布,并因此能够用VLC更有效编码。通过从可用 VLC组合来选择最佳适当的VLC组合,预测索引可以像事件那样被编码。例如,下面的VLC表可以用说明的方法实现:
[0573]
[0574] 表34:B/F-画面中用于块间参考类型的预测和VLC编码方法中的VLC组合和对应头部
[0575] 在一些示例中,可以用跳过级别1编码和VLC(例如,基于其中用符号运行编码对最频繁符号进行编码的代理可变长度编码来编码)来使用预测(例如,全或者高级预测)。在一些示例中,更有效的可以是用符号运行编码器对最常见事件(可能的预测索引0)编码。例如,预测、跳过级别1 和VLC方法可以使用上述预测来在每个块处获得预测索引。最频繁索引可以用符号运行编码(诸如本文说明的基于符号运行的熵编码器)隔离并编码,且剩余预测索引可以使用最佳可用VLC表被编码。例如,下面的VLC 表可以用该方法实现:
[0576]
[0577] 表35:B/F-画面中用于块间参考类型的预测、跳过级别1和VLC编码方法中的VLC组合和对应头部
[0578] 如上所述,在一些示例中,可以使用默认或者类默认预测。默认预测可以用VLC(例如,基于使用默认或者类默认预测的代理可变长度编码的编码)使用。例如,在默认或者类默认预测中,来自邻近块的事件的直方图可以用于预测。
[0579] 对于这样的方法而言,可以提供示例VLC组合和关联的VLC头部,如下面表示出的那样:
[0580]
[0581] 表36:B/F-画面中用于块间参考类型的默认预测和VLC编码方法中的VLC 组合和对应头部
[0582] 在一些示例中,可以用跳过级别1和VLC(例如,基于其中使用类默认预测用符号运行编码对最频繁符号进行编码的代理可变长度编码的编码)来使用默认或者类默认预测。对于这样的方法而言,可以提供示例VLC 组合和关联的VLC头部,如下面表示出的那样:
[0583]
[0584] 表37:B/F-画面中用于块间参考类型的默认预测、跳过级别1和VLC编码方法中的VLC组合和对应头部
[0585] 为了提供最有效编码成本,可以选择任何或者所有说明中最好的用来评价。例如,为了实施方式的简化,可以仅评价一些说明的方法。在其他实施方式中,可以评价所有说明的方法。在任何情况下,选择的方法可以经由开销(诸如块间参考类型编码技术指示符等)表明。下面的表提供当6 个技术可用来使用时使用的示例头部:
[0586]方法 头部代码 头部码长
默认方法 0 1
仅VLC 100 3
预测和VLC 101 3
预测、跳过级别1和VLC 110 3
默认预测和VLC 1110 4
默认预测、跳过级别1和VLC 1111 4
[0587] 表38:F-画面中用于对块间参考类型编码的用于切换选择的方法的头部
[0588] 在表38的示例中,交替预测可以指如本文所述的类默认预测。
[0589] 如上所述,多块参考类型数据可以通过基于多块参考类型数据中的多个多块参考类型选择最低位成本VLC表被编码,并基于选择的VLC表对多块参考类型编码。
[0590] 例如,在P-画面中,可以使用VLC查找方法对多块的参考类型(例如多块参考类型数据)编码。例如,数据点可以使用VLC表被编码,在P- 画面编码的参考类型中具有2个情况:(1)具有一个固定的参考(例如 PAST_NONE等)和第二参考的2个可能性的多块;以及(2)具有一个固定的参考(例如PAST_NONE等)和第二参考的3个可能性的多块。在这样的示例中,2个VLC表可以在每个情况的各个之间选择,如下:
[0591]参考类型索引 VLC VLC位
0 0 1
1 1 1
[0592]参考类型索引 VLC VLC位
0 0 1
1 10 2
2 11 2
[0593] 表39:示例VLC表。上表用于情况(1)且下表用于情况(2)
[0594] 在F画面中,在F-画面中,可以使用自适应性VLC方法对用于多块的参考类型(例如多块参考类型数据)编码。例如,基于要编码的数据的统计,可以从可用表选择最佳表,表索引或者指示符可以被编码,且数据点 (例如多块参考类型数据)其本身可以使用选择的表被编码。例如,在F- 画面编码的参考类型中可能有5个可能的情况:(1)具有1个固定参考(例如PAST_NONE)和用于具有dir=0(例如零的方向)的第二参考的4个可能性的多块;(2)具有1个固定参考(例如PAST_NONE)和用于具有dir=0 (例如零的方向)的第二参考的5个可能性的多块;具有1个固定参考(例如PAST_NONE)和用于具有dir=0(例如零的方向)的第二参考的6个可能性的多块;具有1个固定参考(例如PAST_NONE)和用于具有dir=0(例如零的方向)的第二参考的7个可能性的多块;以及具有1个固定参考(例如PAST_NONE)和用于具有dir=0(例如零的方向)的第二参考的8个可能性的多块;。
[0595] 在这样的示例中,可以基于表40-44来执行自适应性VLC,其中表40-44 的每个示出可以可用于每个情况的表。表前的段落
[0596]VLC索引 头部 参考类型0 参考类型1 参考类型2 参考类型3
0 00 - 10 0 11
1 01 11 0 - 10
2 10 110 0 10 111
3 11 00 01 10 11
[0597] 表40:对于情况1而言,可能有4个VLC表
[0598]
[0599] 表41:对于情况2而言,可能有8个VLC表
[0600]
[0601] 表42:对于情况3而言,可能有8个VLC表
[0602]
[0603] 表43:对于情况4而言,可能有4个VLC表
[0604]
[0605] 表44:对于情况5而言,可能有8个VLC表。
[0606] 讨论的方法和系统可以在能实现的增益和复杂性之间做出有利的折衷。
[0607] 如相对于图16所述,视频编码系统1600可以包含成像设备1601、视频编码器100和/或经由处理单元1620的逻辑电路1650实现的视频编码器、视频解码器200和/或经由处理单元1620的逻辑电路1650实现的视频解码器、天线1602、一个或多个处理器1603、一个或多个存储器存储1604和/ 或显示器设备1605 。
[0608] 在一些示例中,经由逻辑电路1650实现的视频编码器100可以包含图像缓冲器(例如经由处理单元1620或者存储器存储1604))和图形处理单元(例如经由处理单元1620)。图形处理单元可以通信地耦合至图像缓冲器。图形处理单元可以包含经由逻辑电路1650实现的视频编码器100,以实施相对于图1和图4、6和本文别处说明的各种模块。例如,图形处理单元可以包含熵编码器逻辑电路等。逻辑电路可以被配置为执行本文说明的各种操作。例如,熵编码器逻辑电路可以被配置为:加载针对视频帧的至少部分的拆分数据、水平/垂直数据、模式数据、以及参考类型数据;确定包括用于对拆分数据和模式数据联合编码的熵编码位成本、以及用于对水平/垂直数据编码的熵编码位成本的第一估计的熵编码位成本;确定包括用来对拆分数据和模式数据分开编码的熵编码位成本、以及用来对水平/垂直数据编码的熵编码位成本的第二估计的熵编码位成本;基于第一估计的熵编码位成本和第二估计的熵编码位成本的最低成本,在对针对视频帧的至少部分的拆分数据和模式数据联合与分开编码之间进行选择;基于选择的编码,对拆分数据和模式数据熵联合或者分开编码,对水平/垂直数据熵编码,对参考类型数据熵编码;以及输出包括熵编码的拆分数据、模式数据、水平/ 垂直数据和参考类型数据的比特流。
[0609] 在一些示例中,视频编码系统1600的天线1602可以被配置为接收视频数据的熵编码的比特流。如上所述,比特流可以包含各种类型的压缩的视频数据。视频编码系统1600还可以包含耦合至天线1602并配置为将编码的比特流解码的视频解码器200。例如,视频解码器200可以被配置为:将编码的比特流解码,来确定与视频帧的至少部分的拆分数据和模式数据相关联的联合或者分开编码头部;当联合或者分开编码头部表明联合编码时,将拆分数据和模式数据联合熵解码,并将水平/垂直数据熵解码;当联合或者分开编码头部表明分开编码,将拆分数据和模式数据分开熵解码,并将水平/垂直数据熵解码;以及将编码的比特流熵解码,来确定对于部分视频帧参考类型数据。
[0610] 虽然已参考各种实施方式说明了本文记载的某些特性,但该说明不意图从限制意义上解释。因此,本领域的技术人员容易想到的、本文说明的实施方式的各种修改以及其他实施方式被视为落入本公开的精神和范围内。
[0611] 下面的示例涉及其他实施例。
[0612] 在一个示例中,一种视频编码的计算机实现的方法可以包含:加载针对视频帧的至少部分的拆分数据、水平/垂直数据、模式数据、以及参考类型数据;确定第一估计的熵编码位成本,其包括用来对所述拆分数据和所述模式数据进行联合编码的熵编码位成本,以及用来对所述水平/垂直数据进行编码的熵编码位成本;确定第二估计的熵编码位成本,其包括用来对所述拆分数据和所述模式数据进行分开编码的熵编码位成本,以及用来对所述水平/垂直数据进行编码的熵编码位成本;基于所述第一估计的熵编码位成本和所述第二估计的熵编码位成本中的最低者,在对针对所述视频帧的至少所述部分的所述拆分数据和所述模式数据进行联合编码与分开编码之间进行选择;基于选择的编码,对所述拆分数据和所述模式数据进行联合或者分开熵编码,并且对所述水平/垂直数据进行熵编码;对所述参考类型数据进行熵编码;以及输出包括熵编码的拆分数据、模式数据、水平/垂直数据、以及参考类型数据的比特流。
[0613] 在另一个示例中,视频编码的计算机实现的方法还可以包含拆分数据,包括表明块是否被进一步拆分的拆分位、以及表明所述拆分数据中的每个拆分是水平拆分还是垂直拆分的所述水平/垂直数据。模式数据可以包含针对所述视频帧的块或者分区的模式,并且,所述模式数据包括帧内模式、跳过模式、拆分模式、自动模式、帧间模式、或者多帧模式中的至少一个。参考类型数据可以包含针对所述视频帧的帧间模式块的参考类型。所述视频帧包括P-画面,并且,针对所述帧间模式块的参考类型包括以下中的至少一个:之前解码的帧、基于之前解码的超分辨率的帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧。参考类型数据可以包含针对所述视频帧的多帧模式块的参考类型。所述视频帧包括P-画面,并且,针对所述多帧模式块的参考类型包括:包括之前解码的帧的第一参考类型;以及包括第二之前解码的帧的第二参考类型。参考类型数据可以包含针对所述视频帧的帧间模式块的参考类型。所述视频帧包括B/F-画面,并且,针对所述帧间模式块的参考类型包括以下中的至少一个:之前解码的帧、投影的参考帧、基于之前解码的超分辨率的帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧。参考类型数据可以包含针对所述视频帧的多帧模式块的参考类型。所述视频帧包括B/F-画面,并且,针对所述多帧模式块的参考类型包括:包括之前解码的帧的第一参考类型;以及包括第二之前解码的帧、基于之前解码的超分辨率的帧、投影的参考帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧中的至少一个的第二参考类型。视频帧的至少部分可以是视频帧的片或者视频帧。参考类型数据可以包含块间参考类型数据、以及多块参考类型数据。参考类型数据可以包含块间参考类型数据和多块参考类型数据,并且,对所述参考类型数据进行熵编码包括:基于所述多块参考类型数据中的多个多帧参考类型选择针对所述多块参考类型数据的可变长度编码表;以及基于所述可变长度编码表对所述多块参考类型数据进行编码。参考类型数据可以包含块间参考类型数据和多块参考类型数据。所述视频帧包括P-画面,并且,对所述参考类型数据进行熵编码包括:基于使用默认预测的代理可变长度编码,确定第一块间参考类型数据编码位成本;基于使用修改的默认预测的代理可变长度编码,确定第二块间参考类型数据编码位成本;基于使用预测的代理可变长度编码,确定第三块间参考类型数据编码位成本;以及基于所述第一块间参考类型数据编码位成本、所述第二块间参考类型数据编码位成本、以及所述第三块间参考类型数据编码位成本中的最低位成本,对所述块间参考类型数据进行编码。参考类型数据可以包含块间参考类型数据和多块参考类型数据。所述视频帧包括B/F-画面,并且,对所述参考类型数据进行熵编码包括:基于使用默认预测的代理可变长度编码,确定第一块间参考类型数据编码位成本;基于使用修改的默认预测的代理可变长度编码,确定第二块间参考类型数据编码位成本;基于不使用预测的代理可变长度编码,确定第三块间参考类型数据编码位成本;基于使用预测的代理可变长度编码,确定第四块间参考类型数据编码位成本;基于其中用使用预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第五块间参考类型数据编码位成本;基于使用类默认预测的代理可变长度编码,确定第六块间参考类型数据编码位成本;基于其中用使用类默认预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第七块间参考类型数据编码位成本;以及基于所述第一块间参考类型数据编码位成本至所述第七块间参考类型数据编码位成本中的最低位成本,对所述块间参考类型数据进行编码。编码模式数据可以包含:基于没有预测的代理可变长度编码,确定第一模式数据编码位成本;基于其中用没有预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第二模式数据编码位成本;基于其中用没有预测的符号运行编码对最频繁符号和第二最频繁符号进行编码的代理可变长度编码,确定第三模式数据编码位成本;基于使用预测的代理可变长度编码,确定第四模式数据编码位成本;基于其中用使用预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第五模式数据编码位成本;基于其中用使用预测的符号运行编码对最频繁符号和第二最频繁符号进行编码的代理可变长度编码,确定第六模式数据编码位成本;以及基于所述第一模式数据编码位成本至所述第六模式数据编码位成本中的最低位成本,对所述模式数据进行编码。对模式数据编码可以包含:确定模式事件的可能排序,所述模式事件包括从最有可能到最不可能排序的可用模式;确定在所述视频帧的第一块处的实际模式事件;以及将所述实际模式事件编码为所述实际模式事件在模式事件的所述可能排序中的索引。对模式数据编码可以包含:确定模式事件的本地可能排序,所述模式事件包括从最有可能到最不可能排序的可用模式。确定模式的所述本地可能排序包括:确定模式事件的全局可能排序;确定在邻近所述视频帧的第一块的块处的实际模式事件;基于被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第一子群组;基于位于模式事件的所述全局可能排序中的模式事件而非被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第二子群组;以及将所述第一子群组和第二子群组连接以形成模式的所述本地可能排序;确定在所述视频帧的第一块处的实际模式事件;以及将所述实际模式事件编码为所述实际模式事件在模式事件的所述本地可能排序中的索引。对拆分数据和模式数据联合编码可以包含:使用具有帧内、跳过、自动、帧间、或者多帧中的至少一个的终止块的预测树,将所述拆分数据和所述模式数据联合熵编码为事件的集合。如果块没有终止,则将所述块定义为拆分,并且,使用符号运行编码对所述预测树的第一级别进行编码,并且使用可变长度代理编码对所述预测树的更高级别进行编码。对拆分数据和模式数据联合编码可以包含:使用具有帧内、跳过、自动、帧间、或者多帧中的至少一个的终止块的预测树,将所述拆分数据和所述模式数据联合熵编码为事件的集合。如果块没有终止,则将所述块定义为拆分。使用符号运行编码对所述预测树的第一级别进行编码,并且使用代理可变长度编码对所述预测树的更高级别进行编码,并且,对所述水平/垂直数据进行熵编码包括位图编码或者代理可变长度编码中的至少一个。
[0614] 在其他示例中,视频编码器可以包含图像缓冲器,以及图形处理单元,其具有熵编码器逻辑电路。图形处理单元可以通信地耦合至所述图像缓冲器,并且,所述熵编码器逻辑电路被配置为:加载针对视频帧的至少部分的拆分数据、水平/垂直数据、模式数据、以及参考类型数据;确定第一估计的熵编码位成本,其包括用来对所述拆分数据和所述模式数据进行联合编码的熵编码位成本,以及用来对所述水平/垂直数据进行编码的熵编码位成本;确定第二估计的熵编码位成本,其包括用来对所述拆分数据和所述模式数据进行分开编码的熵编码位成本、以及用来对所述水平/垂直数据进行编码的熵编码位成本;基于所述第一估计的熵编码位成本和所述第二估计的熵编码位成本中的最低者,在对针对所述视频帧的至少所述部分的所述拆分数据和所述模式数据进行联合编码与分开编码之间进行选择;基于选择的编码,对所述拆分数据和所述模式数据进行联合或者分开熵编码,并且对所述水平/垂直数据进行熵编码;对所述参考类型数据进行熵编码;以及输出包括熵编码的拆分数据、模式数据、水平/垂直数据、以及参考类型数据的比特流。
[0615] 在其他示例视频编码器中,拆分数据可以包含表明块是否被进一步拆分的拆分位、以及表明所述拆分数据中的每个拆分是水平拆分还是垂直拆分的所述水平/垂直数据。所述模式数据包括针对所述视频帧的块或者分区的模式,并且,所述模式数据包括帧内模式、跳过模式、拆分模式、自动模式、帧间模式、或者多帧模式中的至少一个。所述参考类型数据包括针对所述视频帧的帧间模式块的参考类型。所述视频帧包括P-画面,并且,针对所述帧间模式块的参考类型包括以下中的至少一个:之前解码的帧、基于之前解码的超分辨率的帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧。所述参考类型数据包括针对所述视频帧的多帧模式块的参考类型。所述视频帧包括P-画面,并且,针对所述多帧模式块的参考类型包括:包括之前解码的帧的第一参考类型;以及包括第二之前解码的帧的第二参考类型。所述参考类型数据包括针对所述视频帧的帧间模式块的参考类型。所述视频帧包括B/F-画面,并且,针对所述帧间模式块的参考类型包括以下中的至少一个:之前解码的帧、投影的参考帧、基于之前解码的超分辨率的帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧。所述参考类型数据包括针对所述视频帧的多帧模式块的参考类型。所述视频帧包括B/F-画面,并且,针对所述多帧模式块的参考类型包括:包括之前解码的帧的第一参考类型;以及包括第二之前解码的帧、基于之前解码的超分辨率的帧、投影的参考帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧中的至少一个的第二参考类型。所述视频帧的至少所述部分包括所述视频帧的片或者所述视频帧。所述参考类型数据包括块间参考类型数据和多块参考类型数据。所述参考类型数据包括块间参考类型数据和多块参考类型数据,并且,对所述参考类型数据进行熵编码包括所述熵编码器逻辑电路还被配置为:基于所述多块参考类型数据中的多个多帧参考类型选择针对所述多块参考类型数据的可变长度编码表;以及基于所述可变长度编码表对所述多块参考类型数据进行编码。所述参考类型数据包括块间参考类型数据和多块参考类型数据。所述视频帧包括P-画面,并且,对所述参考类型数据进行熵编码包括所述熵编码器逻辑电路还被配置为:
基于使用默认预测的代理可变长度编码,确定第一块间参考类型数据编码位成本;基于使用修改的默认预测的代理可变长度编码,确定第二块间参考类型数据编码位成本;基于使用预测的代理可变长度编码,确定第三块间参考类型数据编码位成本;以及基于所述第一块间参考类型数据编码位成本、所述第二块间参考类型数据编码位成本、以及所述第三块间参考类型数据编码位成本中的最低位成本,对所述块间参考类型数据进行编码。所述参考类型数据包括块间参考类型数据和多块参考类型数据。所述视频帧包括B/F-画面,并且,对所述参考类型数据进行熵编码包括所述熵编码器逻辑电路还被配置为:基于使用默认预测的代理可变长度编码,确定第一块间参考类型数据编码位成本;基于使用修改的默认预测的代理可变长度编码,确定第二块间参考类型数据编码位成本;基于不使用预测的代理可变长度编码,确定第三块间参考类型数据编码位成本;基于使用预测的代理可变长度编码,确定第四块间参考类型数据编码位成本;基于其中用使用预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第五块间参考类型数据编码位成本;基于使用类默认预测的代理可变长度编码,确定第六块间参考类型数据编码位成本;基于其中用使用类默认预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第七块间参考类型数据编码位成本;以及基于所述第一块间参考类型数据编码位成本至所述第七块间参考类型数据编码位成本中的最低位成本,对所述块间参考类型数据进行编码。对所述模式数据进行分开熵编码包括所述熵编码器逻辑电路还被配置为:基于没有预测的代理可变长度编码,确定第一模式数据编码位成本;基于其中用没有预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第二模式数据编码位成本;基于其中用没有预测的符号运行编码对最频繁符号和第二最频繁符号进行编码的代理可变长度编码,确定第三模式数据编码位成本;基于使用预测的代理可变长度编码,确定第四模式数据编码位成本;基于其中用使用预测的符号运行编码对最频繁符号进行编码的代理可变长度编码,确定第五模式数据编码位成本;基于其中用使用预测的符号运行编码对最频繁符号和第二最频繁符号进行编码的代理可变长度编码,确定第六模式数据编码位成本;以及基于所述第一模式数据编码位成本至所述第六模式数据编码位成本中的最低位成本,对所述模式数据进行编码。对所述模式数据进行分开熵编码包括所述熵编码器逻辑电路还被配置为:确定模式事件的可能排序,所述模式事件包括从最有可能到最不可能排序的可用模式;确定在所述视频帧的第一块处的实际模式事件;以及将所述实际模式事件编码为所述实际模式事件在模式事件的所述可能排序中的索引。对所述模式数据进行分开熵编码包括所述熵编码器逻辑电路还被配置为:确定模式事件的本地可能排序,所述模式事件包括从最有可能到最不可能排序的可用模式。确定模式的所述本地可能排序包括所述熵编码器逻辑电路还被配置为:确定模式事件的全局可能排序;确定在邻近所述视频帧的第一块的块处的实际模式事件;基于被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第一子群组;基于位于模式事件的所述全局可能排序中的模式事件而非被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第二子群组;以及将所述第一子群组和第二子群组连接以形成模式的所述本地可能排序;确定在所述视频帧的第一块处的实际模式事件;以及将所述实际模式事件编码为所述实际模式事件在模式事件的所述本地可能排序中的索引。对所述拆分数据和所述模式数据进行联合熵编码包括所述熵编码器逻辑电路还被配置为:使用具有帧内、跳过、自动、帧间、或者多帧中的至少一个的终止块的预测树,将所述拆分数据和所述模式数据联合熵编码为事件的集合。如果块没有终止,则将所述块定义为拆分。使用符号运行编码对所述预测树的第一级别进行编码,并且使用代理可变长度编码对所述预测树的更高级别进行编码,并且,对所述水平/垂直数据进行熵编码包括所述熵编码器逻辑电路还被配置为执行位图编码或者代理可变长度编码中的至少一个。
[0616] 在又一个示例中,系统可以包含配置为对编码的比特流解码的视频解码器。视频解码器可以被配置为:对所述编码的比特流进行解码,以确定与视频帧的至少部分的拆分数据和模式数据相关联的联合或者分开编码头部;当所述联合或者分开编码头部表明联合编码时,对所述拆分数据和所述模式数据进行联合熵解码,并且对水平/垂直数据进行熵解码;当所述联合或者分开编码头部表明分开编码时,对所述拆分数据和所述模式数据进行分开熵解码,并且对所述水平/垂直数据进行熵解码;以及对所述编码的比特流进行熵解码来确定针对所述视频帧的所述部分的参考类型数据。
[0617] 在其他示例系统中,系统还可以包含配置为接收熵编码的比特流的天线、以及配置为呈现视频帧的显示器设备。拆分数据可以包含表明块是否被进一步拆分的拆分位,并且,所述水平/垂直数据表明所述拆分数据中的拆分是水平拆分还是垂直拆分。所述模式数据包括针对所述视频帧的块或者分区的模式,并且,所述模式数据包括帧内模式、跳过模式、拆分模式、自动模式、帧间模式、或者多帧模式中的至少一个。所述参考类型数据包括针对所述视频帧的帧间模式块的参考类型。所述视频帧包括P-画面,并且,针对所述帧间模式块的参考类型包括以下中的至少一个:之前解码的帧、基于之前解码的超分辨率的帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧。所述参考类型数据包括针对所述视频帧的多帧模式块的参考类型。所述视频帧包括P-画面,并且,针对所述多帧模式块的参考类型包括:包括之前解码的帧的第一参考类型;以及包括第二之前解码的帧的第二参考类型。所述参考类型数据包括针对所述视频帧的帧间模式块的参考类型。所述视频帧包括B/F-画面,并且,针对所述帧间模式块的参考类型包括以下中的至少一个:之前解码的帧、投影的参考帧、基于之前解码的超分辨率的帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧。所述参考类型数据包括针对所述视频帧的多帧模式块的参考类型。所述视频帧包括B/F-画面,并且,针对所述多帧模式块的参考类型包括:包括之前解码的帧的第一参考类型;以及包括第二之前解码的帧、基于之前解码的超分辨率的帧、投影的参考帧、之前解码的支配性运动变形帧、或者之前解码的增益变形帧中的至少一个的第二参考类型。所述参考类型数据包括块间参考类型数据和多块参考类型数据。所述参考类型数据包括块间参考类型数据和多块参考类型数据,并且,所述视频解码器被配置为:基于所述多块参考类型数据中的多个多帧参考类型,选择针对所述多块参考类型数据的可变长度编码表;以及基于所述可变长度编码表,对所述多块参考类型数据进行熵解码。所述参考类型数据包括块间参考类型数据和多块参考类型数据。所述视频帧包括P-画面,并且,所述视频解码器被配置为:从表明以下中的至少一个的比特流确定块间参考类型编码技术指示符:基于使用默认预测的代理可变长度编码的编码、基于使用修改的默认预测的代理可变长度编码的编码、或者基于使用预测的代理可变长度编码的编码;以及基于表明的技术,对所述块间参考类型数据进行熵解码。所述参考类型数据包括块间参考类型数据和多块参考类型数据。所述视频帧包括B/F-画面,并且,所述视频解码器被配置为:从表明以下中的至少一个的比特流确定块间参考类型编码技术指示符:基于使用默认预测的代理可变长度编码的编码、基于使用修改的默认预测的代理可变长度编码的编码、基于不使用预测的代理可变长度编码的编码、基于使用预测的代理可变长度编码的编码、基于其中用使用预测的符号运行编码对最频繁符号进行编码的代理可变长度编码的编码、或者基于使用类默认预测的代理可变长度编码的编码;以及基于表明的技术,对所述块间参考类型数据进行熵解码。对所述拆分数据和所述模式数据进行分开熵解码包括所述视频解码器被配置为:确定模式事件的可能排序,所述模式事件包括从最有可能到最不可能排序的可用模式;从所述比特流确定针对所述视频帧的第一块的实际模式事件的索引;以及基于模式事件的所述索引和所述可能排序,确定针对所述视频帧的所述第一块的所述实际模式事件,并且,对所述拆分数据和所述模式数据进行分开熵解码包括所述视频解码器被配置为:确定模式事件的本地可能排序,所述模式事件包括从最有可能到最不可能排序的可用模式。确定模式的所述本地可能排序包括所述视频解码器被配置为:确定模式事件的全局可能排序;确定在邻近所述视频帧的第一块的块处的实际模式事件;基于被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第一子群组;基于位于模式事件的所述全局可能排序中的模式事件而非被放置在其相对于模式事件的所述全局可能排序的顺序中的所述实际模式事件,形成模式事件的第二子群组;以及将所述第一子群组和第二子群组连接以形成模式的所述本地可能排序;从所述比特流确定针对所述视频帧的第一块的实际模式事件的索引;以及基于模式事件的所述索引和所述本地可能排序,确定针对所述视频帧的所述第一块的所述实际模式事件。
[0618] 在其他示例中,至少一个机器可读介质可以包含多个指令,其响应于在计算设备上被执行,使所述计算设备执行根据上述示例中任何一个所述的方法。
[0619] 在其他示例中,装置可以包含用于执行根据上述示例中任何一个所述的方法的单元。
[0620] 上述示例可以包含特征的特定组合。然而,这样的上述示例不限于此,在各种实施方式中,上述示例可以包含:仅承担这样的特征的子集,承担不同顺序的这样的特征,承担这样的特征的不同组合,和/或承担明确列出的那些特征额外的特征。例如,相对于示例方法说明的所有特征可以相对于示例装置、示例系统、和/或示例物品来实现,并且反之亦然。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈