码率控制的方法、计算机系统和装置与流程

文档序号:18136869发布日期:2019-07-10 10:41阅读:323来源:国知局
码率控制的方法、计算机系统和装置与流程

本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。

本发明涉及信息技术领域,并且更具体地,涉及一种码率控制的方法、计算机系统和装置。



背景技术:

视频通信系统的通信信道带宽一般是恒定、有限的,码率不断变化的码流不适合在恒定信道中传输。因此,在视频编码中引入了码率控制,目的是将产生的码流码率控制在一定波动范围之内。

有效的码率控制可以使视频通信系统在一定数据带宽的限制下能有较稳定的传输码率以及较小的视频时延。因此,如何有效地控制码率成为亟待解决的一个技术问题。



技术实现要素:

本发明实施例提供了一种码率控制的方法、计算机系统和装置,能够有效地控制码率。

第一方面,提供了一种码率控制的方法,该方法包括:根据帧中未编码的第一条带的配额和该帧中至少一个已编码条带的配额,确定用于编码该第一条带的第一编码参数的调整值,其中,该配额关联编码条带使用比特的份数;根据该调整值,确定该第一编码参数。

第二方面,提供了一种计算机系统,该计算机系统包括:存储器,用于存储计算机可执行指令;处理器,用于访问该存储器,并执行该计算机可执行指令,以进行如下操作:根据帧中未编码的第一条带的配额和该帧中至少一个已编码条带的配额,确定用于编码该第一条带的第一编码参数的调整值,其中,该配额关联编码条带使用比特的份数;根据该调整值,确定该第一编码参数。

第三方面,提供了一种码率控制的装置,该装置包括:调整值确定模块,用于根据帧中未编码的第一条带的配额和该帧中至少一个已编码条带的配额,确定用于编码该第一条带的第一编码参数的调整值,其中,该配额关联编码条带使用比特的份数;编码参数确定模块,用于根据该调整值,确定该第一编码参数。

第四方面,提供了一种计算机存储介质,该计算机存储介质中存储有程序代码,该程序代码可以用于指示执行上述第一方面的方法。

本发明实施例的技术方案,基于配额确定编码参数,可以适时地对编码参数进行调整,从而能够有效地控制码率。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是可应用本发明实施例的技术方案的系统的示意图。

图2是本发明实施例的输入数据的示意图。

图3是本发明一个实施例的码率控制的方法的示意性流程图。

图4是本发明另一个实施例的码率控制的方法的示意性流程图。

图5是本发明实施例的去除高频系数的示意图。

图6是本发明实施例的计算机系统的示意性框图。

图7是本发明实施例的码率控制的装置的示意性框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

应理解,本文中的具体的例子只是为了帮助本领域技术人员更好地理解本发明实施例,而非限制本发明实施例的范围。

还应理解,本发明实施例中的公式只是一种示例,而非限制本发明实施例的范围,各公式可以进行变形,这些变形也应属于本发明保护的范围。

还应理解,在本发明的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

本发明实施例的技术方案可以用于控制视频或其他媒体数据的码率。例如,在规定视频序列的每一帧编码后的比特数不能超过特定比特数的情况下,本发明实施例的技术方案可以不需要预处理,而能一次性地实现码率控制。

在本发明的各种实施例中,每一帧编码后的比特数不能超过的特定比特数也可以称为分配给该帧的比特数或者该帧可用的比特数。

图1示出了可应用本发明实施例的技术方案的系统100的示意图。如图1所示,系统100可以接收并编码输入数据102,以产生输出数据108。例如,系统100可以接收视频数据,压缩视频数据以产生压缩的比特流。在数据编码过程中,系统100可以采用本发明实施例的技术方案控制编码数据的码率。在一些实施例中,系统100中的部件可以由一个或多个处理器实现,该处理器可以是计算设备中的处理器,也可以是可移动设备(例如无人机)中的处理器。该处理器可以包括arm处理器,现场可编程门阵列(field-programmablegatearray,fpga),中央处理器(centralprocessingunit,cpu),图形处理器(graphicsprocessingunit,gpu)等。

如图1所示,系统100可以包括编码器104和码率控制器106。编码器104和码率控制器106可以由相同或不同的计算设备实现。在一些实施例中,码率控制器106可以为编码器104中的一个集成部分,或者,编码器104可以为码率控制器106中的一个集成部分。编码器104用于接收输入数据102,编码输入数据102,并提供包括编码的输入数据的输出数据108。输入数据可以包括文本,图像,图形对象,动画序列,音频,视频,或者任何需要编码的其他数据。在一些情况下,输入数据可以包括来自传感器的传感数据,该传感器可以为视觉传感器(例如,照相机、红外传感器),麦克风,近场传感器(例如,超声波传感器、雷达),位置传感器,温度传感器,触摸传感器等。在一些情况下,输入数据可以包括来自用户的信息,例如,生物信息,该生物信息可以包括面部特征,指纹扫描,视网膜扫描,嗓音记录,dna采样等。

编码对于高效和/或安全的传输或存储数据是必需的。对输入数据的编码可以包括数据压缩,加密,纠错编码,格式转换等。例如,对多媒体数据(例如视频或音频)压缩可以减少在网络中传输的比特数量。敏感数据,例如金融信息和个人标识信息,在传输和存储前可以加密以保护机密和/或隐私。

任何合适的编码技术都可以用于编码输入数据。编码类型依赖于被编码的数据和具体的编码需求。

在一些实施例中,编码器104可以实现一种或多种不同的编解码器。每种编解码器可以包括实现不同编码算法的代码,指令或计算机程序。基于各种因素,包括输入数据的类型和/或来源,编码数据的接收实体,可用的计算资源,网络环境,商业环境,规则和标准等,可以选择一种合适的编码器编码给定的输入数据集。

例如,编码器可以被配置为编码一系列视频帧。编码每个帧中的数据可以采用一系列步骤。编码可以完全地基于帧内的空间信息。在一些实施例中,编码步骤可以包括变换步骤,量化步骤和熵编码步骤。

在图1中,码率控制器106可以通过给编码器104提供编码参数110(也可以称为码率控制参数)以控制输出数据的码率。码率可以被控制到一个特定的范围内(例如,低于最大码率,高于最小码率)或者接近目标平均码率。可选地,可以控制码率依赖于帧的复杂度,带宽限制,缓存容量或其他因素而变化。在一些情况下,码率控制可以有一个或多个层级,例如画面组(groupofpicture,gop)级,帧级,条带级,宏块级,块级,像素级等。

在本发明各种实施例中,编码参数可以包括一个或多个控制编码流程中的量化步骤的量化参数,从而编码参数可以控制产生的输出数据的码率。例如,量化参数可以包括量化步长,表示量化步长或者与量化步长相关的值,例如,h.264或者类似的编码器中的量化参数(quantizationparameter,qp),或者,量化矩阵或其参考矩阵等。编码参数也可以包括控制编码流程中其他方面的参数。

码率控制器106可以基于有关输出数据108或编码器104的输出信息112控制码率,或者,基于有关输入数据102的输入信息114控制码率。

在一些实施例中,码率控制器106可以基于一个或多个码率控制预定值116控制码率。

本发明各实施例中的预定值可以预先设定和/或动态更新。预定值可以用于获取编码参数。

在一些实施例中,码率控制器106还可以基于其他附加信息控制码率。

图2示出了根据本发明实施例的输入数据的示意图。

如图2所示,输入数据202可以包括多个帧204。例如,多个帧204可以表示视频流中的连续的图像帧。每个帧204可以包括一个或多个条带206。每个条带206可以包括一个或多个宏块208。每个宏块208可以包括一个或多个块210。每个块210可以包括一个或多个像素212。每个像素212可以包括一个或多个数据集,对应于一个或多个数据部分,例如,亮度数据部分和色度数据部分。数据单元可以为帧,条带,宏块,块,像素或以上任一种的组。在不同的实施例中,数据单元的大小可以变化。作为举例,一个帧204可以包括100个条带206,每个条带206可以包括10个宏块208,每个宏块208可以包括4个(例如,2x2)块210,每个块210可以包括64个(例如,8x8)像素212。

以下以条带为例描述本发明实施例的技术方案。应理解,本发明实施例的技术方案中的条带也可以变换为其他数据单元,例如,宏块、块等,本发明对此并不限定。

图3示出了本发明实施例的码率控制的方法300的示意性流程图。该方法300可以由图1所示的系统100执行,具体地,可以由图1中的码率控制器106执行。

310,根据帧中未编码的第一条带的配额和该帧中至少一个已编码条带的配额,确定用于编码该第一条带的第一编码参数的调整值,其中,该配额关联编码条带使用比特的份数。

本发明实施例中的配额关联编码条带使用比特的份数。也就是说,编码某一条带使用比特的份数与该条带的配额相关。例如,若某一条带的配额为n,则编码该条带可以使用n份的比特,其中1份的比特的数量后续将具体描述。

在本发明实施例中,第一条带表示待编码的条带,第一编码参数表示用于编码该第一条带的编码参数。对于第一条带,根据第一条带的配额和帧中至少一个已编码条带的配额,确定第一编码参数的调整值。该调整值用于确定该第一编码参数。也就是说,在本发明实施例中,用于编码第一条带的编码参数基于第一条带的配额和帧中至少一个已编码条带的配额。

可选地,编码参数可以为量化参数。关于编码参数的说明可以参见前述的描述,在此不再赘述。

可选地,如图4所示,在步骤310之前,该方法300还可以包括:

306,确定该帧中每个条带的配额。

本发明对配额的确定方式不做限定,条带的配额可以与条带的数据特性关联,也可以与特定的信息关联。

可选地,在本发明一个实施例中,可以根据该帧中每个条带的数据特性确定该帧中每个条带的配额。

具体而言,在本实施例中,条带的配额可以与条带的数据特性关联。数据特性包括但不限于复杂度、有趣度或纹理度等。可选地,每个条带的配额与每个条带的数据特性之间可以为正向映射关系。例如,条带的复杂度越高,其配额越大。

可选地,复杂度信息可以根据图像处理的方法获得。例如通过sobel算子获取相关梯度值来评价图像的复杂度;或者通过roberts算子获取相关高频分量幅值来评价图像的复杂度;或者通过边界检测(edgedetection)获取边界幅值(edgemagnitude)来评价图像的复杂度。

可选地,条带可以根据以下方式分类:

若帧中某一条带行中的条带的复杂度的平均值大于预定值n1,且该条带行中复杂度大于预定值n2的条带的数目大于预定值n3,则该条带行为噪声条带行,噪声条带行中的条带为噪声条带;

否则,该条带行为非噪声条带行,非噪声条带行中的条带为非噪声条带;

若非噪声条带行中的某一条带的复杂度大于预定值n4,n4不小于n2,则该条带为包含有规律高频分量的非噪声条带;

若非噪声条带行中的每一个条带的复杂度为0,则为零条带行,零条带行中的条带为零条带。

应理解,上述条带的分类方式只是示例,本发明对此并不限定,也就是说,也可以根据其他方式对条带进行分类。

可选地,在本发明另一个实施例中,可以根据该帧中每个条带的位置或预配置信息确定该帧中每个条带的配额。

具体而言,条带的配额也可以根据条带的位置确定,例如,可以根据条带所在的位置是否是图像中的关键区域确定配额。或者,条带的配额也可以根据预配置信息确定,例如,预先配置哪些条带的配额高,哪些条带的配额低等。

可选地,以复杂度为例,作为一个实施例,可以根据以下公式(1)确定帧中噪声条带的配额,

quotai=stadatai*m1/sumstadatanoise(1)

其中,quotai为该帧中噪声条带i的配额,stadatai为该条带i的复杂度,sumstadatanoise为该帧中所有噪声条带的复杂度的累加和,m1为预定值。

类似地,可以根据以下公式(2)确定该帧中非噪声条带的配额,

quotaj=stadataj*m2/sumstadatanonnoise(2)

其中,quotaj为该帧中非噪声条带j的配额,stadataj为该条带j的复杂度,sumstadatanonnoise为该帧中所有非噪声条带的复杂度的累加和,m2为预定值。

可选地,作为一个实施例,在该帧中非噪声条带j的配额quotaj大于某一预定值时,quotaj可以被设置为该预定值。也就是说,若根据上述公式(2)得到的某一非噪声条带的配额较大时,则设置其配额为预定值,这样可以使得非噪声条带的配额不至于特别大。

在确定了条带的配额后,接下来可以确定每份配额对应的比特数。下面进行详细描述。

可选地,如图4所示,该方法300还可以包括:

308,确定每份配额对应的比特数。

可选地,在本发明一个实施例中,在该帧包括噪声条带时,

根据分配给该帧的比特数中编码该帧中所有噪声条带可用的比特数,该帧中所有噪声条带的配额的累加和,和该帧中的噪声条带中配额为零的条带的数目,确定该帧中噪声条带的每份配额对应的比特数;

根据分配给该帧的比特数中编码该帧中所有非噪声条带可用的比特数,该帧中所有非噪声条带的配额的累加和,和该帧中的非噪声条带中配额为零的条带的数目,确定该帧中非噪声条带的每份配额对应的比特数。

具体而言,在帧中包括噪声条带时,可以将分配给该帧的比特数分为编码该帧中所有噪声条带可用的比特数,以及编码该帧中所有非噪声条带可用的比特数,二者的比例可以为该帧中所有噪声条带的复杂度的累加和与该帧中所有非噪声条带的复杂度的累加和的比例。噪声条带的每份配额对应的比特数和非噪声条带的每份配额对应的比特数分别与编码该帧中所有噪声条带可用的比特数和编码该帧中所有非噪声条带可用的比特数关联。

具体地,作为一个实施例,该帧中噪声条带的每份配额对应的比特数可以为,

size4noise/(sumquotanoise+numquota0noise)(3)

其中,size4noise为分配给该帧的比特数中编码该帧中所有噪声条带可用的比特数,sumquotanoise为该帧中所有噪声条带的配额的累加和,numquota0noise该帧中的噪声条带中配额为零的条带的数目;

类似地,该帧中非噪声条带的每份配额对应的比特数可以为,

size4nonnoise/(sumquotanonnoise+numquota0nonnoise)(4)

其中,size4nonnoise为分配给该帧的比特数中编码该帧中所有非噪声条带可用的比特数,sumquotanonnoise为该帧中所有非噪声条带的配额的累加和,numquota0nonnoise该帧中的非噪声条带中配额为零的条带的数目。

可选地,在本发明另一个实施例中,在该帧不包括噪声条带时,根据分配给该帧的比特数,该帧中所有非噪声条带的配额的累加和,和该帧中的非噪声条带中配额为零的条带的数目,确定每份配额对应的比特数。

具体地,作为一个实施例,在该帧不包括噪声条带时,每份配额对应的比特数可以为,

sizetotal/(sumquotanonnoise+numquota0nonnoise)(5)

其中,sizetotal为分配给该帧的比特数,sumquotanonnoise为该帧中所有非噪声条带的配额的累加和,numquota0nonnoise该帧中的非噪声条带中配额为零的条带的数目。

可选地,在本发明另一个实施例中,在该帧不包括噪声条带时,还可以根据如下的另一种方式确定每份配额对应的比特数:

在该帧不包括噪声条带时,

该帧中零条带行中的每一个零条带使用的编码比特数可以为预定值;

根据分配给该帧的比特数,该帧中所有零条带行中的零条带使用的编码比特数,该帧中零条带行中的零条带的数目,该帧中所有非噪声条带的配额的累加和,和该帧中的非噪声条带中配额为零的条带的数目,确定每份配额对应的比特数。

具体地,作为一个实施例,在该帧不包括噪声条带时,每份配额对应的比特数可以为,

remsize/(sumquotanonnoise+numquota0nonnoise-numzeroslice)(6)

其中,remsize为分配给该帧的比特数中,除去该帧中所有零条带行中的零条带使用的编码比特数后剩余的比特数,numzeroslice为该帧中零条带行中的零条带的数目,sumquotanonnoise为该帧中所有非噪声条带的配额的累加和,numquota0nonnoise该帧中的非噪声条带中配额为零的条带的数目。

可选地,这种方式可以在该帧满足以下条件之一时采用:

存在一个条带的配额大于或等于某一预定值;

在非零条带行中,存在至少一个条带的配额是0;

复杂度为0的条带的数目大于某一预定值。

若以上条件都不满足,则可以采用前一种方式。

以上详细描述了条带的配额,以及每份配额对应的比特数的确定方式,下面详细描述调整值的确定方式。

可选地,在本发明一个实施例中,可以根据该第一条带的配额和该帧中该第一条带附近的至少一个已编码条带的配额,确定该调整值。

具体而言,在本实施例中,所采用的至少一个已编码条带可以是该第一条带附近的条带,但应理解,本发明对所采用的已编码条带并不限定。

可选地,在本发明一个实施例中,可以根据该第一条带的配额和该帧中与该第一条带相邻的至少一个已编码条带的配额,确定该调整值。

也就是说,在本实施例中,所采用的至少一个已编码条带可以是与该第一条带相邻的条带。

应理解,所采用的至少一个已编码条带与编码顺序有关,例如,在编码顺序为从左到右、从上到下时,所采用的至少一个已编码条带可以为该第一条带的左侧、上方或左上的条带;在编码顺序为从右到左、从下到上时,所采用的至少一个已编码条带可以为该第一条带的右侧、下方或右下的条带。为了便于描述,以下以编码顺序为从左到右、从上到下为例进行说明,对于其他编码顺序可以以此进行等效变换。

可选地,在本发明一个实施例中,在该帧中该第一条带的左侧条带和上方条带中的至少一个满足第一条件时,根据该第一条带的配额和该第一条带的左侧条带和上方条带中的至少一个的配额,确定该调整值,

其中,该第一条带的左侧条带满足第一条件表示该第一条带不是该第一条带所在的条带行的第一个条带,

该第一条带的上方条带满足第一条件表示该第一条带所在的条带行不是该帧的第一个条带行,而且,

在该第一条带是非噪声条带时该第一条带上方的条带行是非噪声条带行或者在该第一条带是噪声条带时该第一条带上方的条带行是噪声条带行。

具体而言,条带满足第一条件表示该条带可用,即可以采用该条带。在本实施例中,在第一条带的左侧条带和上方条带中的至少一个可用时,根据该第一条带的配额和可用的条带的配额确定该调整值。

可选地,在该第一条带的左侧条带和上方条带中的至少一个满足第一条件时,可以采用以下方式确定该调整值。

若该第一条带的配额为0,且该第一条带的左侧条带和上方条带的配额均不为0,则确定该调整值为第一预定值。

在该帧中已编码的条带所使用的比特数大于分配给该帧中已编码的条带的比特数时,该第一预定值大于0,在该帧中已编码的条带所使用的比特数不大于分配给该帧中已编码的条带的比特数时,该第一预定值不大于0。

若该第一条带的配额不为0,且该第一条带的左侧条带和上方条带的配额均为0,则确定该调整值为第二预定值。

在该帧中已编码的条带所使用的比特数大于分配给该帧中已编码的条带的比特数时,该第二预定值大于0,在该帧中已编码的条带所使用的比特数不大于分配给该帧中已编码的条带的比特数时,该第二预定值不大于0。

若该第一条带的配额不为0,且该第一条带的左侧条带和上方条带中的至少一个的配额不为0,则根据该第一条带的配额,和该第一条带的左侧条带和上方条带中配额不为0的条带的配额和所使用的比特数,确定该调整值。

具体地,在该第一条带的左侧条带和上方条带的配额均不为0时,根据该第一条带的配额,该第一条带可用的比特数,该第一条带的左侧条带和上方条带的配额和所使用的比特数,用于编码该第一条带的左侧条带和上方条带的编码参数,确定编码参数预测值。

可选地,可以根据以下公式确定该编码参数预测值,

nextqidx=predqidx*predsize/allosize(7)

其中,allosize为该第一条带可用的比特数,在该第一条带的配额不为0时,该第一条带可用的比特数可以为该第一条带的配额与每份配额对应的比特数的乘积。

在该第一条带的左侧条带和上方条带的配额均不为0时,上述公式(7)中的predsize和predqidx可以根据以下公式(8)-(11)确定,

predsizet=sizet*quotac/quotat(8)

predsizel=sizel*quotac/quotal(9)

predsize=(predsizet+predsizel)/2(10)

predqidx=(qidxt+qidxl)/2(11)

其中,quotac、quotal和quotat分别为该第一条带、该第一条带的左侧条带和该第一条带的上方条带的配额,qidxl和qidxt分别为用于编码该第一条带的左侧条带和上方条带的编码参数,sizel和sizet分别为该第一条带的左侧条带和该第一条带的上方条带所使用的比特数。

在该第一条带的左侧条带的配额不为0,该第一条带的上方条带的配额为0时,根据该第一条带的配额,该第一条带可用的比特数,该第一条带的左侧条带的配额和所使用的比特数,用于编码该第一条带的左侧条带的编码参数,确定编码参数预测值。

具体地,在该第一条带的左侧条带的配额不为0,该第一条带的上方条带的配额为0时,上述公式(7)中的predsize和predqidx可以根据以下公式(12)-(14)确定,

predsize=predsizel(12)

predsizel=sizel*quotac/quotal(13)

predqidx=qidxl(14)

在该第一条带的上方条带的配额不为0,该第一条带的左侧条带的配额为0时,根据该第一条带的配额,该第一条带可用的比特数,该第一条带的上方条带的配额和所使用的比特数,用于编码该第一条带的上方条带的编码参数,确定编码参数预测值。

具体地,在该第一条带的上方条带的配额不为0,该第一条带的左侧条带的配额为0时,上述公式(7)中的predsize和predqidx可以根据以下公式(15)-(17)确定,

predsize=predsizet(15)

predsizet=sizet*quotac/quotat(16)

predqidx=qidxt(17)

在得到编码参数预测值后,可以根据该编码参数预测值和用于编码第二条带的第二编码参数,确定该调整值,其中,该第二条带为该帧中已编码的最后一个条带。

具体地,可以根据以下公式确定该调整值,

qidxdelta=nextqidx–preqidx(18)

其中,qidxdelta为该调整值,preqidx为该第二编码参数,nextqidx为该编码参数预测值。

若该第一条带的配额为0,且该第一条带的左侧条带和上方条带中的至少一个的配额为0,则根据该第一条带的左侧条带和上方条带中配额为0的条带所使用的比特数,确定该调整值。

具体地,在该第一条带的左侧条带和上方条带的配额均为0时,根据该第一条带可用的比特数,该第一条带的左侧条带和上方条带所使用的比特数,用于编码该第一条带的左侧条带和上方条带的编码参数,确定编码参数预测值。

可选地,可以根据上述公式(7)确定该编码参数预测值。其中,在该第一条带的配额为0时,该第一条带可用的比特数allosize可以为1份配额对应的比特数或者预定的比特数。

在该第一条带的左侧条带和上方条带的配额均为0时,上述公式(7)中的predsize和predqidx可以根据以下公式(19)-(22)确定,

predsizet=sizet(19)

predsizel=sizel(20)

predsize=(predsizet+predsizel)/2(21)

predqidx=(qidxt+qidxl)/2(22)

在该第一条带的左侧条带的配额为0,该第一条带的上方条带的配额不为0时,根据该第一条带可用的比特数,该第一条带的左侧条带所使用的比特数,用于编码该第一条带的左侧条带的编码参数,确定编码参数预测值。

具体地,在该第一条带的左侧条带的配额为0,该第一条带的上方条带的配额不为0时,上述公式(7)中的predsize和predqidx可以根据以下公式(23)-(25)确定,

predsize=predsizel(23)

predsizel=sizel(24)

predqidx=qidxl(25)

在该第一条带的上方条带的配额为0,该第一条带的左侧条带的配额不为0时,根据该第一条带可用的比特数,该第一条带的上方条带所使用的比特数,用于编码该第一条带的上方条带的编码参数,确定编码参数预测值。

具体地,在该第一条带的上方条带的配额为0,该第一条带的左侧条带的配额不为0时,上述公式(7)中的predsize和predqidx可以根据以下公式(26)-(28)确定,

predsize=predsizet(26)

predsizet=sizet(27)

predqidx=qidxt(28)

类似地,在得到编码参数预测值后,可以根据该编码参数预测值和用于编码第二条带的第二编码参数,确定该调整值。例如,可以根据上述公式(18)确定该调整值。

可选地,在本发明各种实施例中,在该帧中已编码的条带所使用的比特数大于分配给该帧中已编码的条带的比特数时,限定该调整值大于0,在该帧中已编码的条带所使用的比特数小于分配给该帧中已编码的条带的比特数时,限定该调整值小于0。

也就是说,在该帧中,如果已编码条带积累的比特数超过了分配给这些条带的比特数,那么限定该调整值大于零;如果已编码条带积累的比特数小于了分配给这些条带的比特数,那么限定该调整值小于零。

320,根据该调整值,确定该第一编码参数。

在得到调整值后,基于该调整值确定用于编码该第一条带的编码参数。

可选地,在本发明一个实施例中,可以根据该调整值和第二编码参数,确定该第一编码参数,其中,该第二编码参数为用于编码第二条带的编码参数,该第二条带为该帧中已编码的最后一个条带。

可选地,作为一个实施例,该第一编码参数可以为该第二编码参数与该调整值的和,如以下公式(29)所示。

qidx=preqidx+qidxdelta(29)

其中,qidx为该第一编码参数,preqidx为该第二编码参数,qidxdelta该调整值。

可选地,作为一个实施例,在该帧中未编码的条带的数目不大于某一预定值,且该帧中已编码的条带所使用的比特数大于分配给该帧中已编码的条带的比特数时,该第一编码参数为该第二编码参数与该调整值以及大于0的预定值的和,如以下公式(30)所示。

qidx=preqidx+n+qidxdelta(30)

其中,qidx为该第一编码参数,preqidx为该第二编码参数,n为大于0的预定值,qidxdelta该调整值。

可选地,在本发明一个实施例中,在该第一编码参数超出编码参数取值范围时,限定该第一编码参数在该编码参数取值范围内。

编码参数要限定在编码参数取值范围内。若通过上述方式得到的第一编码参数超出编码参数取值范围,则限定该第一编码参数在该编码参数取值范围内。

对于编码参数和编码参数取值范围可以设定初始值,编码参数可通过上述方式不断调整,编码参数取值范围也可以不断调整。

可选地,如图4所示,该方法300还可以包括:

302,确定初始编码参数。

本发明对初始编码参数的确定方式不做限定,例如,可以根据数据特性设定。

可选地,对于该帧中的非噪声条带,可以根据该帧中所有非噪声条带的平均复杂度确定初始编码参数,其中,该平均复杂度越小时,该初始编码参数越小。可选地,在该平均复杂度大于某一预定值时,若该帧中包括包含有规律高频分量的非噪声条带,则该初始编码参数可以为预定值n5;若该帧中不包括包含有规律高频分量的非噪声条带,则该初始编码参数为预定值n6,其中n6大于n5。

可选地,对于该帧中的噪声条带,可以确定初始编码参数为预定值n7,n7不小于n6。

可选地,如图4所示,该方法300还可以包括:

304,确定初始编码参数取值范围。

也就是说,确定编码参数取值范围的初始值。

可选地,可以根据初始编码参数,确定初始编码参数取值范围。

具体地,作为一个实施例,该初始编码参数取值范围的上限可以为,

maxqidx=qidx0+delta1(31)

该初始编码参数取值范围的下限可以为,

minqidx=qidx0–delta2(32)

其中,maxqidx和minqidx分别为该初始编码参数取值范围的上限和下限,qidx0为初始编码参数,delta1和delta2为大于零的常数。

可选地,在本发明一个实施例中,在该帧中未编码的条带(表示为第三条带)的左侧条带和上方条带均满足第二条件时,确定用于编码该第三条带的第三编码参数为初始编码参数,

其中,该第三条带的左侧条带满足第二条件表示该第三条带是该第三条带所在的条带行的第一个条带,

该第三条带的上方条带满足第二条件表示该第三条带所在的条带行是该帧的第一个条带行,或者,在该第三条带是非噪声条带时该第三条带上方的条带行是噪声条带行,或者,在该第三条带是噪声条带时该第三条带上方的条带行是非噪声条带行。

与第一条件相反,条带满足第二条件表示该条带不可用。在某一条带的左侧条带和上方条带均不可用时,用于编码该条带的编码参数采用初始编码参数。

这样,结合初始编码参数以及前述的根据调整值确定编码参数的方式,可以得到用于编码每一条带的编码参数。

可选地,用于限定编码参数的取值的编码参数取值范围也可以不断调整。

可选地,在本发明一个实施例中,可以根据已编码结果,调整该编码参数取值范围。

具体地,若在该帧的编码过程中,连续出现该帧中已编码的条带所使用的比特数小于分配给该帧中已编码的条带的比特数的情况,则将该编码参数取值范围的下限减小某一预定值。可选地,在该帧的编码过程中该编码参数取值范围的下限累积减小的和不大于某一预定值。

若在该帧的编码过程中,连续出现该帧中已编码的条带所使用的比特数大于分配给该帧中已编码的条带的比特数的情况,则将该编码参数取值范围的上限增大某一预定值。可选地,在该帧的编码过程中该编码参数取值范围的上限累积增大的和不大于某一预定值。

可选地,在本发明一个实施例中,若该帧中已编码的条带所使用的比特数大于分配给该帧中已编码的条带的比特数,在编码该第一条带时去除该第一条带中的预定高频系数对应的分量。

具体而言,当编码产生的比特数过高时,在下一条带编码时,将根据设定参数,特定的高频系数会被cut-off(即视为零),不再进行编码。

例如,如图5所示,假如cut-off的系数值设置为60,则图中高于60的系数都将被视为0。

本发明实施例的码率控制的方法,基于配额确定编码参数,可以适时地对编码参数进行调整,从而能够有效地控制码率。

上文中详细描述了根据本发明实施例的码率控制的方法,下面将描述根据本发明实施例的计算机系统和码率控制的装置。

图6示出了本发明实施例的计算机系统600的示意性框图。如图6所示,该计算机系统600可以包括处理器610和存储器620。

应理解,该计算机系统600还可以包括其他计算机系统中通常所包括的部件,例如,输入输出设备、通信接口等,本发明对此并不限定。

存储器620用于存储计算机可执行指令。

存储器620可以是各种种类的存储器,例如可以包括高速随机存取存储器(randomaccessmemory,ram),还可以包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器,本发明对此并不限定。

处理器610用于访问该存储器620,并执行该计算机可执行指令,以进行上述本发明实施例的码率控制的方法中的操作。

处理器610可以包括arm处理器,fpga,cpu,gpu等,本发明对此并不限定。

图7示出了本发明实施例的码率控制的装置700的示意性框图。该装置700可以执行上述本发明实施例的码率控制的方法。该装置700可以设置于上述系统100中,例如,该装置700可以为图1中的码率控制器106。

如图7所示,该装置700可以包括:

调整值确定模块710,用于根据帧中未编码的第一条带的配额和该帧中至少一个已编码条带的配额,确定用于编码该第一条带的第一编码参数的调整值,其中,该配额关联编码条带使用比特的份数;

编码参数确定模块720,用于根据该调整值,确定该第一编码参数。

本发明实施例的码率控制的装置,基于配额确定编码参数,可以适时地对编码参数进行调整,从而能够有效地控制码率。

可选地,在本发明一个实施例中,该调整值确定模块710用于,

根据该第一条带的配额和该帧中与该第一条带相邻的至少一个已编码条带的配额,确定该调整值。

可选地,在本发明一个实施例中,该调整值确定模块710用于,

在该帧中该第一条带的左侧条带和上方条带中的至少一个满足第一条件时,根据该第一条带的配额和该第一条带的左侧条带和上方条带中的至少一个的配额,确定该调整值,

其中,该第一条带的左侧条带满足第一条件表示该第一条带不是该第一条带所在的条带行的第一个条带,

该第一条带的上方条带满足第一条件表示该第一条带所在的条带行不是该帧的第一个条带行,而且,

在该第一条带是非噪声条带时该第一条带上方的条带行是非噪声条带行或者在该第一条带是噪声条带时该第一条带上方的条带行是噪声条带行。

可选地,在本发明一个实施例中,该调整值确定模块710用于,

若该第一条带的配额为0,且该第一条带的左侧条带和上方条带的配额均不为0,则确定该调整值为第一预定值,

其中,在该帧中已编码的条带所使用的比特数大于分配给该帧中已编码的条带的比特数时,该第一预定值大于0,在该帧中已编码的条带所使用的比特数不大于分配给该帧中已编码的条带的比特数时,该第一预定值不大于0;或者

若该第一条带的配额不为0,且该第一条带的左侧条带和上方条带的配额均为0,则确定该调整值为第二预定值,

其中,在该帧中已编码的条带所使用的比特数大于分配给该帧中已编码的条带的比特数时,该第二预定值大于0,在该帧中已编码的条带所使用的比特数不大于分配给该帧中已编码的条带的比特数时,该第二预定值不大于0。

可选地,在本发明一个实施例中,该调整值确定模块710用于,

若该第一条带的配额不为0,且该第一条带的左侧条带和上方条带中的至少一个的配额不为0,则根据该第一条带的配额,和该第一条带的左侧条带和上方条带中配额不为0的条带的配额和所使用的比特数,确定该调整值。

可选地,在本发明一个实施例中,该调整值确定模块710用于,

在该第一条带的左侧条带和上方条带的配额均不为0时,根据该第一条带的配额,该第一条带可用的比特数,该第一条带的左侧条带和上方条带的配额和所使用的比特数,用于编码该第一条带的左侧条带和上方条带的编码参数,确定编码参数预测值,或者,

在该第一条带的左侧条带的配额不为0,该第一条带的上方条带的配额为0时,根据该第一条带的配额,该第一条带可用的比特数,该第一条带的左侧条带的配额和所使用的比特数,用于编码该第一条带的左侧条带的编码参数,确定编码参数预测值,或者,

在该第一条带的上方条带的配额不为0,该第一条带的左侧条带的配额为0时,根据该第一条带的配额,该第一条带可用的比特数,该第一条带的上方条带的配额和所使用的比特数,用于编码该第一条带的上方条带的编码参数,确定编码参数预测值;

根据该编码参数预测值和用于编码第二条带的第二编码参数,确定该调整值,其中,该第二条带为该帧中已编码的最后一个条带。

可选地,在本发明一个实施例中,该调整值确定模块710用于,

若该第一条带的配额为0,且该第一条带的左侧条带和上方条带中的至少一个的配额为0,则根据该第一条带的左侧条带和上方条带中配额为0的条带所使用的比特数,确定该调整值。

可选地,在本发明一个实施例中,该调整值确定模块710用于,

在该第一条带的左侧条带和上方条带的配额均为0时,根据该第一条带可用的比特数,该第一条带的左侧条带和上方条带所使用的比特数,用于编码该第一条带的左侧条带和上方条带的编码参数,确定编码参数预测值,或者,

在该第一条带的左侧条带的配额为0,该第一条带的上方条带的配额不为0时,根据该第一条带可用的比特数,该第一条带的左侧条带所使用的比特数,用于编码该第一条带的左侧条带的编码参数,确定编码参数预测值,或者,

在该第一条带的上方条带的配额为0,该第一条带的左侧条带的配额不为0时,根据该第一条带可用的比特数,该第一条带的上方条带所使用的比特数,用于编码该第一条带的上方条带的编码参数,确定编码参数预测值;

根据该编码参数预测值和用于编码第二条带的第二编码参数,确定该调整值,其中,该第二条带为该帧中已编码的最后一个条带。

可选地,在本发明一个实施例中,该编码参数确定模块720用于,

根据该调整值和第二编码参数,确定该第一编码参数,其中,该第二编码参数为用于编码第二条带的编码参数,该第二条带为该帧中已编码的最后一个条带。

可选地,在本发明一个实施例中,该第一编码参数为该第二编码参数与该调整值的和。

可选地,在本发明一个实施例中,在该帧中未编码的条带的数目不大于第三预定值,且该帧中已编码的条带所使用的比特数大于分配给该帧中已编码的条带的比特数时,该第一编码参数为该第二编码参数与该调整值以及大于0的第四预定值的和。

可选地,在本发明一个实施例中,该编码参数确定模块720用于,

在该第一编码参数超出编码参数取值范围时,限定该第一编码参数在该编码参数取值范围内。

可选地,在本发明一个实施例中,该装置700还包括:

取值范围确定模块730,用于根据已编码结果,调整该编码参数取值范围。

可选地,在本发明一个实施例中,该装置700还包括:

配额确定模块740,用于确定该帧中每个条带的配额。

可选地,在本发明一个实施例中,该配额确定模块740用于,

根据该帧中每个条带的数据特性确定该帧中每个条带的配额。

可选地,在本发明一个实施例中,该帧中每个条带的配额与每个条带的数据特性之间为正向映射关系。

可选地,在本发明一个实施例中,该装置700还包括:

比特数确定模块750,用于确定每份配额对应的比特数。

可选地,在本发明一个实施例中,该比特数确定模块750用于,在该帧包括噪声条带时,

根据分配给该帧的比特数中编码该帧中所有噪声条带可用的比特数,该帧中所有噪声条带的配额的累加和,和该帧中的噪声条带中配额为零的条带的数目,确定该帧中噪声条带的每份配额对应的比特数;

根据分配给该帧的比特数中编码该帧中所有非噪声条带可用的比特数,该帧中所有非噪声条带的配额的累加和,和该帧中的非噪声条带中配额为零的条带的数目,确定该帧中非噪声条带的每份配额对应的比特数。

可选地,在本发明一个实施例中,在该帧不包括噪声条带时,根据分配给该帧的比特数,该帧中所有非噪声条带的配额的累加和,和该帧中的非噪声条带中配额为零的条带的数目,确定每份配额对应的比特数。

可选地,在本发明一个实施例中,在该帧不包括噪声条带时,

该帧中零条带行中的每一个零条带使用的编码比特数为第十一预定值;

根据分配给该帧的比特数,该帧中所有零条带行中的零条带使用的编码比特数,该帧中零条带行中的零条带的数目,该帧中所有非噪声条带的配额的累加和,和该帧中的非噪声条带中配额为零的条带的数目,确定每份配额对应的比特数。

可选地,在本发明一个实施例中,该编码参数确定模块720还用于,确定初始编码参数。

可选地,在本发明一个实施例中,该取值范围确定模块730还用于,确定初始编码参数取值范围。

可选地,在本发明一个实施例中,该编码参数确定模块720用于,

在该帧中未编码的第三条带的左侧条带和上方条带均满足第二条件时,确定用于编码该第三条带的第三编码参数为初始编码参数,

其中,该第三条带的左侧条带满足第二条件表示该第三条带是该第三条带所在的条带行的第一个条带,

该第三条带的上方条带满足第二条件表示该第三条带所在的条带行是该帧的第一个条带行,或者,在该第三条带是非噪声条带时该第三条带上方的条带行是噪声条带行,或者,在该第三条带是噪声条带时该第三条带上方的条带行是非噪声条带行。

根据本发明实施例的计算机系统和码率控制的装置可对应于根据本发明实施例的码率控制的方法的执行主体,并且计算机系统和码率控制的装置中的各个模块的上述和其它操作和/或功能分别为了实现前述各个方法的相应流程,为了简洁,在此不再赘述。

本发明实施例还提供了一种计算机存储介质,该计算机存储介质中存储有程序代码,该程序代码可以用于指示执行上述本发明实施例的码率控制的方法。

应理解,在本发明实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1