首页> 中国专利> 提高码率计算效率的电路设计方法、装置、设备及介质

提高码率计算效率的电路设计方法、装置、设备及介质

摘要

本发明公开了一种提高码率计算效率的电路设计方法、装置、设备及介质,方法包括:获取率失真优化中的语法元素,将语法元素分为残差系数信息以及头信息两种类别;若残差系数信息为大于等于预设阈值的编码单元,则根据预设的流水线设计方案计算二值化后的bin串数值之和,若残差系数信息为小于预设阈值的编码单元,则根据预设的串行方案计算二值化后的bin串数值之和;根据预设的串行方案计算头信息二值化后的bin串数值之和;累加两类信息的bin串数值之和,根据累加的bin串数值之和以及预设的码率估计模型进行码率计算。本实施例针对AVS3码率估计算法设计了一种可行的硬件架构,最大化的提高码率估计电路的吞吐量与并行度。

著录项

  • 公开/公告号CN113315968A

    专利类型发明专利

  • 公开/公告日2021-08-27

    原文格式PDF

  • 申请/专利权人 杭州博雅鸿图视频技术有限公司;

    申请/专利号CN202110860621.7

  • 申请日2021-07-29

  • 分类号H04N19/119(20140101);H04N19/147(20140101);H04N19/70(20140101);

  • 代理机构11619 北京辰权知识产权代理有限公司;

  • 代理人付婧

  • 地址 310013 浙江省杭州市西湖区转塘科技经济区块16号3幢249室

  • 入库时间 2023-06-19 12:21:13

说明书

技术领域

本发明涉及视频编解码技术领域,特别涉及一种提高码率计算效率的电路设计方法、装置、设备及介质。

背景技术

率失真优化是AVS3视频编码标准中一项非常重要的技术,它能够有效的提升编码器的性能,但率失真优化需要大量的码率计算。在AVS3中通过熵编码来获取率失真优化过程所需要的码率,由于熵编码自身的特性,导致该过程具备强数据依赖性,难以进行硬件设计。针对这种情况,需要对AVS3中的码率估计进行电路设计,以满足实时性要求。

发明内容

本公开实施例提供了一种提高码率计算效率的电路设计方法、装置、设备及介质。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。

第一方面,本公开实施例提供了一种提高码率计算效率的电路设计方法,包括:

获取率失真优化中的语法元素,将语法元素分为残差系数信息以及头信息两种类别;

若残差系数信息为大于等于预设阈值的编码单元,则根据预设的流水线设计方案计算二值化后的bin串数值之和,若残差系数信息为小于预设阈值的编码单元,则根据预设的串行方案计算二值化后的bin串数值之和;

根据预设的串行方案计算头信息二值化后的bin串数值之和;

累加两类信息的bin串数值之和,根据累加的bin串数值之和以及预设的码率估计模型进行码率计算。

在一个实施例中,头信息为除去残差系数信息以外的其他语法元素信息。

在一个实施例中,若残差系数信息为大于等于预设阈值的编码单元,则根据预设的流水线设计方案计算二值化后的bin串数值之和,包括:

将一维残差系数信息转化成二维残差系数信息;

通过阶梯型数据扫描方式读取二维残差系数信息中左上角的数据;

通过流水线的设计方案计算二维残差系数信息中左上角的数据二值化后的bin串数值之和。

在一个实施例中,通过流水线的设计方案计算二维残差系数信息中左上角的数据二值化后的bin串数值之和,包括:

在第一周期内,计算第一斜列的残差系数值以及游程长度值;

在第二周期内,对第一斜列的残差系数值以及游程长度值进行二值化,统计二值化后的bin串数值之和,以及计算第二斜列的残差系数值以及游程长度值;

在第三周期内,对第二斜列的残差系数值以及游程长度值进行二值化,统计二值化后的bin串数值之和,以及计算第三斜列的残差系数值以及游程长度值;

重复执行上述步骤,直到二维残差系数信息中左上角的全部斜列数据计算完。

在一个实施例中,根据预设的串行方案计算二值化后的bin串数值之和,包括:

根据Zig-zag数据扫描方式读取信息中的全部数据;

通过串行方案依次计算信息中的全部数据二值化后的bin串数值之和。

在一个实施例中,码率估计模型如下所示:

其中,Rate表示估计的码率,Bin表示累加的二值化后的bin串数值之和,

第二方面,本公开实施例提供了一种提高码率计算效率的电路设计装置,包括:

获取模块,用于获取率失真优化中的语法元素,将语法元素分为残差系数信息以及头信息两种类别;

第一计算模块,用于若残差系数信息为大于等于预设阈值的编码单元,则根据预设的流水线设计方案计算二值化后的bin串数值之和,若残差系数信息为小于预设阈值的编码单元,则根据预设的串行方案计算二值化后的bin串数值之和;

第二计算模块,用于根据预设的串行方案计算头信息二值化后的bin串数值之和;

第三计算模块,用于累加两类信息的bin串数值之和,根据累加的bin串数值之和以及预设的码率估计模型进行码率计算。

在一个实施例中,头信息为除去残差系数信息以外的其他语法元素信息。

第三方面,本公开实施例提供了一种提高码率计算效率的电路设计设备,包括处理器和存储有程序指令的存储器,处理器被配置为在执行程序指令时,执行上述实施例提供的提高码率计算效率的电路设计方法。

第四方面,本公开实施例提供了一种计算机可读介质,其上存储有计算机可读指令,计算机可读指令可被处理器执行以实现上述实施例提供的一种提高码率计算效率的电路设计方法。

本公开实施例提供的技术方案可以包括以下有益效果:

本公开实施例基于AVS3提出了一种提高码率计算效率的电路设计方法,实现了率失真优化过程的并行化操作。首先,本公开实施例提出了基于AVS3的头信息与残差系数信息码率估计全并行硬件架构,其次,针对AVS3标准Zig-Zag矩阵扫描所带来的数据强依赖性,提出了一种阶梯形扫描的方案解除了这种数据依赖关系;最后,还针对不同大小编码单元的残差系数码率估计电路提出了流水线设计方案,充分利用各自尺寸的特点提高码率计算效率,最大化的提高码率估计电路的吞吐量与并行度。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1是根据一示例性实施例示出的一种提高码率计算效率的电路设计方法的流程示意图;

图2是根据一示例性实施例示出的一种提高码率计算效率的电路设计示意图;

图3是根据一示例性实施例示出的一种Zig-zag数据扫描方式的示意图;

图4是根据一示例性实施例示出的一种阶梯型数据扫描方式的示意图;

图5是根据一示例性实施例示出的一种大尺寸编码单元流水线设计方案的示意图;

图6是根据一示例性实施例示出的一种提高码率计算效率的硬件电路架构示意图;

图7是根据一示例性实施例示出的一种提高码率计算效率的电路设计装置的结构示意图;

图8是根据一示例性实施例示出的一种提高码率计算效率的电路设计设备的结构示意图;

图9是根据一示例性实施例示出的一种计算机存储介质的示意图。

具体实施方式

以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。

应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本发明的一些方面相一致的系统和方法的例子。

在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

下面将结合附图1-附图6,对本申请实施例提供的提高码率计算效率的电路设计方法进行详细介绍。图1是根据一示例性实施例示出的一种提高码率计算效率的电路设计方法的流程示意图,参见图1,该方法具体包括以下步骤。

S101获取率失真优化中的语法元素,将语法元素分为残差系数信息以及头信息两种类别。

其中,语法元素指的是所有需要进行码率估计的参数,例如,在进行帧内预测时,预测的角度就是一种语法元素,帧间预测时,预测向量的大小也是一种语法元素。获取待计算的语法元素。

在一种可能的实现方式中,帧内帧间预测的语法元素分为两种,一种是残差系数矩阵,一种是除了残差系数矩阵之外的其他语法元素信息,将残差系数矩阵称为残差系数信息,将其他信息称为头信息。

S102若残差系数信息为大于等于预设阈值的编码单元,则根据预设的流水线设计方案计算二值化后的bin串数值之和,若残差系数信息为小于预设阈值的编码单元,则根据预设的串行方案计算二值化后的bin串数值之和。

通常,在判断预测模式的优劣时,误差和码率的大小是最主要的决定因素。对于码率的计算,原AVS3软件参考平台采用的方法依赖性过高,并不能满足实时性要求,本公开实施例采用预设的码率拟合算法解除依赖。针对该算法设计了适用的硬件方案。

在一种可能的实现方式中,对于头信息包含的语法元素由于相互之间没有依赖性,串行计算便可,但是残差系数信息不同,残差系数信息除了包含不同尺寸情况下的残差系数大小外还包括了游程长度,数据之间具有依赖性。

例如,一个残差系数矩阵如下所示:

在计算系数信息的码率时以上每个系数矩阵的值和游程长度都需要进行计算。对于系数的值,在本实施例采用的码率估计算法中,系数为0的码率也为0,系数不为0的计算二值化后的bin串数值之和,例如第一排第四列值为7,bin串为11111110,bin串数值之和为1+1+1+1+1+1+1+0=8,对于游程长度,指的是当前系数与上一个非0系数之间0的个数,上表对应的游程长度如下表所示:

因此,在计算系数信息的码率时除了需要计算系数的值还需要计算游程的长度大小,但是每个游程的长度都需要考虑与前一个非0系数之间有多少个0,这也导致了极强的数据依赖性。即使利用语法元素信息二值化后拟合的算法解除了二值化后的依赖性,但是游程长度的计算使系数之间具有了依赖性,这对于大尺寸编码单元而言成为码率估计并行计算的另一个障碍。现有技术中采用的是Zig-zag的数据扫描方式,图3是根据一示例性实施例示出的一种Zig-zag数据扫描方式的示意图。

对于每一个游程长度,都需要考虑到前面所有系数为0的情况,这样的数据依赖性由语法元素本身特性产生,没法去除,只能采用Zig-zag的数据扫描方式全部扫描,并且采用串行方式依次计算。

小尺寸的编码单元可以采用全串行的方式,就是根据Zig-zag扫描的方式依次执行,可以满足时序的要求,但是对于大尺寸的编码单元来说,串行效率太低,不符合时序要求。

因此,本公开实施例对于残差系数信息以及头信息采用两种不同的电路设计方式。对于不同尺寸大小的残差系数信息也分别采用了两种不同的电路设计方案。

在一种可能的实现方式中,若残差系数信息为大于等于预设阈值的编码单元,则根据预设的流水线设计方案计算二值化后的bin串数值之和,若残差系数信息为小于预设阈值的编码单元,则根据预设的串行方案计算二值化后的bin串数值之和。其中,预设阈值为16*16尺寸的编码单元。

具体地,若残差系数信息为大于等于预设阈值的编码单元,则根据预设的流水线设计方案计算二值化后的bin串数值之和,包括:

将一维残差系数信息转化成二维残差系数信息,通过阶梯型数据扫描方式读取二维残差系数信息中左上角的数据;通过流水线的设计方案计算二维残差系数信息中左上角的数据二值化后的bin串数值之和。

具体地,图4是根据一示例性实施例示出的一种阶梯型数据扫描方式的示意图,如图4所示,原始残差系数信息是大小为1024的一维数组,这样的数组会综合成一个大小为1024的RAM,AVS3参考软件平台会采用全串行的方式执行,造成很大的延时。本实施例先将此数组转化成32*32的二维数组,再采用阶梯型数据扫描方法读取系数信息,便可在32周期内完成左上角全部数据的读取。

通过性能测试,对于大于等于预设阈值的编码单元,只扫描左上角的数据性能损失极小,因此,可以通过阶梯型数据扫描方式只扫描左上角的数据。

进一步地,通过流水线的设计方案计算左上角残差系数信息的二值化后的bin串数值之和。

在一个可选地实施例中,通过流水线的设计方案计算二维残差系数信息中左上角的数据二值化后的bin串数值之和,包括:

在第一周期内,计算第一斜列的残差系数值以及游程长度值;在第二周期内,对第一斜列的残差系数值以及游程长度值进行二值化,统计二值化后的bin串数值之和,以及计算第二斜列的残差系数值以及游程长度值;在第三周期内,对第二斜列的残差系数值以及游程长度值进行二值化,统计二值化后的bin串数值之和,以及计算第三斜列的残差系数值以及游程长度值;重复执行上述步骤,直到二维残差系数信息中左上角的全部斜列数据计算完,得到左上角残差系数信息的二值化后的bin串数值之和。

图5是根据一示例性实施例示出的一种大尺寸编码单元流水线设计方案的示意图,如图5所示,本公开实施例中的流水线设计方案,对左上角斜列上的数据进行计算,其中,每个斜列上的计算任务有两个,一个是计算ready_data,即计算游程长度和残差系数值;一个是计算coef_bits,即对斜列的残差系数值以及游程长度值进行二值化之后的计数操作。

通过采用流水线设计的方案,在对第一斜列进行二值化处理时,可同时计算第二斜列的残差系数值以及游程长度,提高了计算的效率,降低延时,可同时对两个斜列的数据进行计算。

进一步地,若残差系数信息为小于预设阈值的编码单元,则根据预设的串行方案计算二值化后的bin串数值之和。

对于小尺寸的残差系数信息,可以根据预设的串行方案计算二值化后的bin串数值之和,首先,根据Zig-zag数据扫描方式读取残差系数信息中的全部数据,通过串行方案依次计算二维残差系数信息中的数据二值化后的bin串数值之和。

S103根据预设的串行方案计算头信息二值化后的bin串数值之和。

在一种可能的实现方式中,对于头信息包含的语法元素由于相互之间没有依赖性,串行计算便可,首先,根据Zig-zag数据扫描方式读取头信息中的全部数据,通过串行方案依次计算头信息中的数据二值化后的bin串数值之和。

S104累加两类信息的bin串数值之和,根据累加的bin串数值之和以及预设的码率估计模型进行码率计算。

为了降低数据之间的依赖性,本公开实施例提供了一种码率估计算法,包括:

对率失真优化中的语法元素进行二值化处理,得到二值化后的bin串,其中,bin就是二值化后的结果,例如N=5,二值化后的bin串表示为“111110”,则每一个1或者0都是一个bin。统计二值化后的bin串数值之和,根据bin串数值之和得到拟合的码率估计模型,根据码率估计模型计算估计的码率。

具体地,码率估计模型如下所示:

其中,Rate表示估计的码率,Bin表示二值化后的bin串数值之和,估计的码率Rate与Bin之间存在一阶线性关系,α、β表示模型的参数,模型参数与当前CU(coding unit,编码单元)的大小有关,在一种可能的实现方式中,本公开实施例针对不同的CU大小进行再次拟合,并同时抽样多个序列,最终得到最优30帧BD-Rate结果。从而分析出对于不同CU大小的模型参数。

本公开实施例中的码率估计模型,根据bin串的计数之和与真实码率之间的线性关系进行线性拟合,得到码率估计模型,根据码率估计模型计算估计的码率,大大降低了计算的复杂度以及对数据的依赖性,硬件实施友好。

因此,累加头信息与残差系数信息的二值化后的bin串数值之和,将累加的bin串和代入码率估计模型,即可计算出估计的码率。

图2是根据一示例性实施例示出的一种提高码率计算效率的电路设计示意图,如图2所示,首先,将帧内预测/帧间预测中的语法元素信息分为残差系数信息以及头信息两类,对于系数信息进行系数信息二值化处理,计算二值化后的bin串数值之和,对于头信息进行头信息二值化处理,计算二值化后的bin串数值之和,然后将得到的二值化后的bin串数值之和进行累加,根据累加的bin串数值之和以及码率估计模型进行码率拟合,得到最终码率。

图6是根据一示例性实施例示出的一种提高码率计算效率的硬件电路架构示意图;如图6所示,通过帧内帧间预测,得到头信息以及残差系数矩阵信息两种类别的预测信息,对于头信息,采用串行操作进行二值化,然后累加二值化后的bin串数值之和,对于残差系数矩阵,首先判断残差系数矩阵是否为大尺寸编码单元,若为大尺寸编码单元,则采用流水线设计方案进行计算,若为小尺寸编码单元,则进行串行操作,得到二值化后的bin串数值之和,累加两类信息的bin串数值之和,根据累加的bin串数值之和以及码率估计模型得到计算出来的码率大小,根据计算出的最终码率进行模式决策,得到最优预测模式。

本公开实施例还提供一种提高码率计算效率的电路设计装置,该装置用于执行上述实施例的提高码率计算效率的电路设计方法,如图7所示,该装置包括:

获取模块701,用于获取率失真优化中的语法元素,将语法元素分为残差系数信息以及头信息两种类别;

第一计算模块702,用于若残差系数信息为大于等于预设阈值的编码单元,则根据预设的流水线设计方案计算二值化后的bin串数值之和,若残差系数信息为小于预设阈值的编码单元,则根据预设的串行方案计算二值化后的bin串数值之和;

第二计算模块703,用于根据预设的串行方案计算头信息二值化后的bin串数值之和;

第三计算模块704,用于累加两类信息的bin串数值之和,根据累加的bin串数值之和以及预设的码率估计模型进行码率计算。

需要说明的是,上述实施例提供的提高码率计算效率的电路设计装置在执行提高码率计算效率的电路设计方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的提高码率计算效率的电路设计装置与提高码率计算效率的电路设计方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。

本公开实施例还提供一种与前述实施例所提供的提高码率计算效率的电路设计方法对应的电子设备,以执行上述提高码率计算效率的电路设计方法。

请参考图8,其示出了本申请的一些实施例所提供的一种电子设备的示意图。如图8所示,电子设备包括:处理器800,存储器801,总线802和通信接口803,处理器800、通信接口803和存储器801通过总线802连接;存储器801中存储有可在处理器800上运行的计算机程序,处理器800运行计算机程序时执行本申请前述任一实施例所提供的提高码率计算效率的电路设计方法。

其中,存储器801可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口803(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。

总线802可以是ISA总线、PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。其中,存储器801用于存储程序,处理器800在接收到执行指令后,执行程序,前述本申请实施例任一实施方式揭示的提高码率计算效率的电路设计方法可以应用于处理器800中,或者由处理器800实现。

处理器800可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器800中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器800可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器801,处理器800读取存储器801中的信息,结合其硬件完成上述方法的步骤。

本申请实施例提供的电子设备与本申请实施例提供的提高码率计算效率的电路设计方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。

本申请实施例还提供一种与前述实施例所提供的提高码率计算效率的电路设计方法对应的计算机可读存储介质,请参考图9,其示出的计算机可读存储介质为光盘900,其上存储有计算机程序(即程序产品),计算机程序在被处理器运行时,会执行前述任意实施例所提供的提高码率计算效率的电路设计方法。

需要说明的是,计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。

本申请的上述实施例提供的计算机可读存储介质与本申请实施例提供的提高码率计算效率的电路设计方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号