一种视频编码中的码率控制方法及其装置的制作方法

文档序号:7746584阅读:119来源:国知局
专利名称:一种视频编码中的码率控制方法及其装置的制作方法
技术领域
本发明涉及通信领域的视频编码技术,特别是涉及一种视频编码中的码率控制方
法及其装置。
背景技术
在目前的视频编码压縮技术中,采集的原始视频数据经过编码压縮后,编码出来 的码流虽然得到了较高的压縮比,但是其码率是变化的。而在视频通信领域,通信信道带宽 都是恒定、有限的,码率不断变化的码流不适合在恒定信道中传输。所以,在视频编码中引 入了码率控制,如图1所示,目的是将编码器产生的码流码率控制在一定波动范围之内。
码率控制的基本原理是通过不停地调整编码量化参数(QuantizationParameter, QP)来控制码流缓冲区中比特的占有度,使其在一定程度上尽量保持稳定,不出现上溢和下 溢的情况,从而保持码率的稳定。但是另一方面,编码量化参数QP的变化直接影响图像质 量。QP反映了空间细节压縮情况,如果QP小,则大部分细节得以保留,此时图像质量好而码 率高;如果QP大,则一些细节就会被丢失,此时码率小但是图像失真加强,图像质量下降。 所以,如何在控准码率的前提之下尽可能地提升编码图像质量,是码率控制方法的一个重 要问题。 在一种传统的码率控制方案中,先根据已编码帧信息预测待编码帧的复杂度,并
预算该帧的编码比特数,再根据反馈的虚拟缓冲区填充度确定参考量化步长,最后计算宏
块的空间活动性和宏块实际量化参数QP。该方法可如图2所示,利用预分配的目标编码比
特数、预测的图像复杂度和反馈的虚拟缓冲区占有度等信息来调整QP值。 在另一种传统的码率控制方案中,在正式编码之前先进行预编码,得到码率分配、
图像复杂度、QP分布等信息,在正式编码时综合这些信息再次进行码率控制。该方法可如
图3所示,利用两次编码来达到更精准的码率控制效果。 发明人实现本发明的过程中,发现现有技术至少存在以下缺陷 图2所示的码率控制方案,一方面,在某些特殊场景时目标比特率分配步骤会存
在较大偏差;另一方面,由于预算得到的编码比特数较固定,因此不能随实际编码场景的不
同而变化,容易导致码率控制不准和编码比特数分配不均;再一方面,容易导致量化不均
匀,图像质量差异大; 图3所示的码率控制方案,由于采用了两次编码,因此增加了码率控制的运算复 杂度,不适合于实时系统中的应用。

发明内容
本发明提供了一种视频编码中的码率控制方法及其装置,用以实现在控准码率的 前提之下提升编码图像质量。 本发明提供的视频编码中的码率控制方法,应用于以行宏块作为最小运算单元的 码率控制过程,该方法针对当前行宏块,包括以下步骤
获取当前帧的初始码率控制参数; 根据当前帧的初始码率控制参数、已编码行宏块的编码结果反馈信息,以及编码 场景,确定当前行的QP值; 反馈根据当前行的QP值对当前行进行宏块编码后所得到的编码结果信息。
获取当前帧的初始码率控制参数之后,还包括根据编码场景调整获取到的初始 码率控制参数;确定当前行的QP值,具体为根据调整后的当前帧的初始码率控制参数、所 述反馈信息以及编码场景确定当前行的QP值。 其中,根据编码场景调整获取到的初始码率控制参数,包括根据编码场景调整当 前帧的目标码率,或调整当前帧的初始QP值和目标码率。
其中,根据编码场景调整当前帧的目标码率,包括 当前帧为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码
率相比得到的码率变化超过设定范围的上限值,则将当前帧的目标码率减小; 或者,当前帧的为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧
的目标码率相比得到的码率变化超过设定范围的下限值,则将当前帧的目标码率增加。 上述方法中,根据编码场景调整当前帧的初始QP值和目标码率,包括 当前帧为非I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标
码率相比得到的码率变化超过设定范围时,通过调整QP调整因子,使根据该QP调整因子得
到的当前帧的初始QP值与上一个已编码帧的初始QP值的变化在设定范围之内; 或者,当前帧的初始QP值与其上一个已编码帧的初始QP相比得到的QP变化超过
设定阈值范围的上限值,则减少重新确定当前帧的初始QP值,使减小后的QP值与上一个已
编码帧的初始QP值的变化达到该设定范围的上限值;或者,当前帧的初始QP值与其上一个
已编码帧的初始QP相比得到的QP变化超过设定范围阈值的下限值,则增加当前帧的初始
QP值,使增加后的QP值与上一个已编码帧的初始QP值达到该设定范围的下限值。 根据本发明的方法,确定当前行的QP值,包括 根据当前帧的初始QP值和目标码率,以及已编码行宏块的编码结果反馈信息,确 定当前行的目标码率;根据编码场景调整当前行的目标码率;根据调整后的当前行的目标 码率确定当前行的QP值。 其中,根据编码场景调整当前行的目标码率,包括 将上一个已编码行的码率与该编码行的行目标码率相比得到的变化超过设定范 围的上限值,则减小当前帧中待编码行的行目标码率;如果前者与后者相比得到的变化低 于设定范围的下限值,则增加当前帧中待编码行的行目标码率。 根据本发明的上述方法,根据当前帧的初始QP值和目标码率,以及所述反馈信 息,确定当前行的QP值之后,还包括 通过调整当前行的QP值,使将当前行的QP值与当前帧相邻行的QP值的差值限制 在设定范围内; 或/和,通过调整当前行的QP值,使当前行的QP值与相邻帧对应行的QP值的差 值限制在设定范围内。 其中,若上一个已编码行的码率与该已编码行的目标行码率相比,差值超过设定 阈值,则增大所述设定范围。
根据本发明的上述方法,所述编码结果反馈信息,包括行编码码率。 本发明提供的视频编码中的码率控制装置,应用于以行宏块作为最小运算单元的
码率控制过程,该装置包括 获取模块,用于获取当前帧的初始码率控制参数; 确定模块,与所述获取模块连接,用于根据所述获取模块获取到的当前帧的初始 码率控制参数、已编码行宏块的编码结果反馈信息,以及编码场景,确定当前行的QP值;
反馈模块,与所述确定模块连接,用于将根据所述确定模块确定出的当前行的QP 值对当前行进行宏块编码后得到的编码结果信息反馈给所述确定模块。
上述装置,还包括 第一场景自适应单元,分别与所述获取模块和所述确定模块连接,用于根据编码 场景调整所述获取模块获取到的初始码率控制参数; 所述确定模块具体用于,根据所述第一场景自适应单元调整后的当前帧的初始码 率控制参数、所述反馈信息以及编码场景确定当前行的QP值。 上述装置中,所述第一场景自适应单元具体用于,若当前帧为I帧编码,且该当前 帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围 的上限值,则将当前帧的目标码率减小;或者,若当前帧为I帧编码,且该当前帧的上一个 已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围的下限值,则 将当前帧的目标码率增加;或者,若当前帧为非I帧编码,且该当前帧的上一个已编码帧的 码率与该已编码帧的目标码率相比得到的码率变化超过设定范围,通过调整QP调整因子, 使根据该QP调整因子得到的当前帧的初始QP值与上一个已编码帧的初始QP值的变化在
设定范围之内;或者,当前帧的初始QP值与其上一个已编码帧的初始QP相比得到的QP变 化超过设定阈值范围的上限值,则减少重新确定当前帧的初始QP值,使减小后的QP值与上
一个已编码帧的初始QP值的变化达到该设定范围的上限值;或者,当前帧的初始QP值与其
上一个已编码帧的初始QP相比得到的QP变化超过设定范围阈值的下限值,则增加当前帧 的初始QP值,使增加后的QP值与上一个已编码帧的初始QP值达到该设定范围的下限值。 上述装置中,所述确定模块包括 行目标码率确定单元,用于根据当前帧的初始码率控制参数、已编码行宏块的编 码结果反馈信息,以及当前帧的场景,确定当前行的目标码率; 第二场景自适应单元,与所述行目标码率确定单元连接,用于根据编码场景调整 当前行的目标码率; 行QP值确定单元,与所述第二场景自适应单元连接,用于根据所述第二场景自适 应单元调整后的当前行的目标码率确定当前行的QP值。 其中,所述第二场景自适应单元具体用于,将上一个已编码行的码率与该编码行 的行目标码率相比得到的变化超过设定范围的上限值,则减小当前帧中待编码行的行目标 码率;如果前者与后者相比得到的变化低于设定范围的下限值,则增加当前帧中待编码行 的行目标码率。 上述装置中,所述确定模块还包括 QP自适应单元,与所述行QP值确定单元连接,用于通过调整所述QP值确定单元确 定出的当前行的QP值,使将当前行的QP值与当前帧相邻行的QP值的差值限制在设定范围内;或/和,通过调整当前行的QP值,使当前行的QP值与相邻帧对应行的QP值的差值限制
在设定范围内。 其中,所述QP自适应单元具体用于,若上一个已编码行的码率与该已编码行的目
标行码率相比,差值超过设定阈值,则增大所述设定范围。 本发明的有益技术效果包括 通过以一行宏块作为码率控制最小计算单元的方式,降低计算复杂度;进一步的, 在码率控制过程中引入了自适应场景控制,以使码率控制能更好地适应各种不同的场景, 在控准码率使其不超标的前提下,尽量使更多的码流分配到图像较复杂的行和帧,提高编 码的图像质量。


图1为现有技术中码率控制和视频编码原理示意图; 图2为现有技术中的一种码率控制过程的示意图; 图3为现有技术中的另一种码率控制过程的示意图; 图4为本发明实施例提供的码率控制过程示意图; 图5为本发明实施例的总体实现流程示意图; 图6为本发明实施例提供的当前行宏块QP值的限制控制示意图; 图7为本发明实施例提供的码率控制装置的结构示意图。
具体实施例方式
为了克服现有技术由于运算复杂度高而不能应用于实时系统,或者对场景适应性
差,编码出的图像质量变化差异较大等缺陷,本发明提出了一种基于行级的自适应码率控
制方法,该方法码率控制的最小运算单元是一行宏块,从而降低了码率控制的运算复杂度,
同时通过QP自适应限值控制,提高了量化参数QP的均匀度,进而降低图像质量的变化差
异。本发明的码率控制方法还能自适应不同的场景,如根据场景的不同,自适应地调整码率
控制的各参数,以达到在稳定码率的同时,提高图像质量的效果。 本发明为解决现有技术存在的技术问题所采用的技术方案可包括 在编码开始时,根据帧率、码率、GOP (Group of Picture,即I帧间隔)等一系列编
码信息,通过经验公式得到原始QP值、帧编码比特数等; 在编码过程中,根据反馈得到的已编码码率、当前QP值、帧平均QP值等信息,根据
不同的场景,实时地调整帧编码比特数、行编码比特数、行级QP等,以此来达到控制码率,
同时适应不同场景编码,提高编码图像质量的效果。 下面结合附图和实施例对本发明作进一步说明。 参见图4,为本发明实施例提供的码率控制过程示意图。 如图所示,在一帧图像编码开始时,也即该帧图像码率控制开始时(S401),码率控 制装置会根据前一帧图像宏块编码结果的反馈信息,如已编码的码率(码流长度)、场景自 适应条件、平均QP、GOP等信息(S408的输出),结合场景自适应控制(S402),计算得到当前 帧的起始QP值和当前帧的目标码率(S402的输出),之后进入行级码率控制循环;在行级 码率控制开始时(S403),码率控制装置根据该帧目标码率和从行级码率控制结束时反馈回的已编码行的码率等信息(S407的输出),再结合场景自适应控制(S404)和QP自适应限值 控制(S405),计算得到当前行的QP值和行目标码率(S405的输出);然后,根据计算得到的 当前行的QP值和行目标码率等对当前行宏块进行编码(S406),得到编码码流(S406的输 出),行级码率控制结束(S407),反馈当前行宏块编码的码率、场景自适应条件等(S407的 输出),作为对下一行宏块的行级码率进行控制的参数。当一帧编码结束时(S408),反馈当 前帧宏块编码的码率、场景自适应条件等(S408的输出),作为对下一帧编码过程进行码率 控制的参数。 这里,在码率控制过程中引入了场景自适应控制,用于根据具体编码场景实时地 调整目标码率等参数,达到使码流更多地分配到场景复杂处,以提高编码图像质量的效果。 另外,通过以一行宏块为最小运算单元的码率控制,结合QP自适应限值控制的方法,可在 减小QP在空间和时间上波动性的同时,控准码率。 参见图5,为本发明实施例的总体实现流程示意图。如图所示,当开始对当前视频 帧进行编码时,该流程主要包括以下步骤
步骤S500、编码开始,即码率控制开始。 步骤S501、执行码率控制初始化,得到一起始QP值。码率控制初始化的操作可包 括对编码器设置的码率控制参数进行初始化操作,得到起始QP值。 该步骤中,起始QP值可以是预设值,为操作简便,预设的起始QP值可以是根据以 往进行帧编码所得到的平均QP值。本领域技术人员应该理解,起始QP值可以通过上述 方式或者其他一些常规方式得到,比如在初始化过程中,可根据期望的目标码率、期望的
GOP等参数得到起始QP值,也可以是对一般的图像场景进行实测得到的结果。起始QP值的 确定主要与三个因素有关一是设置的码率(BITRATE),二是待编码图像的宽WIDTH,三是 待编码图像的高HEIGHT。最后得到的起始QP值与上述三个因素的关系是BITRATE越大, (WIDTH*HEIGHT)越小,则QP值越小,反之BITRATE越小,(WIDTH*HEIGHT)越大,则QP值越 大。比如,以编码H. 2644CIF分辨率(WIDTH为704, HEIGHT为576)码率BITRATE为4M的 码流来说,其QP值取30 ;当编码4CIF分辨率码率BITRATE为2M的码流时,QP值取32 ;当 编码CIF分辨率(WIDTH为352, HEIGHT为288)码率BITRATE为2M的码流时,QP取26。
步骤S502、接收前一帧编码结束时反馈回来的编码结果信息,开始对当前帧进行 码率控制。 步骤S503、计算当前帧的初始QP值(记为QP。)和目标码率,并可进一步通过场景 自适应控制过程,对计算得到的当前帧的QP。和当前帧的目标码率进行调整。
该步骤可内嵌一个场景自适应控制过程,用于对较复杂场景或编码码率起伏较大 的场景进行控制。该控制过程可以包括 如果当前帧为I帧编码,且检测出编码场景较复杂(即当前帧的编码复杂程度较 高),对码率控制压力较大,可能会有码率控制超标的危险,则会自动调整I帧目标码率的 计算,使用较小的目标码率,以达到压制码流超标的效果,如减小帧目标码率。当然,如果检 测出当前编码场景较简单,也可增加帧目标码率;如果检测出当前编码场景复杂度适中,也 可不对帧目标码率进行调整。其中,编码复杂程度的高低可由相应的阈值进行界定,例如, 将上一个已编码帧的码率与它的目标码率相比较(如可采用相减得到差值的方式进行比 较,或采用相除得到比值的方式进行比较),如果码率变化超过设定范围的上限值,则表示编码复杂程度较高,可增加当前帧的目标码率;如果码率变化低于设定范围的下限值,则可减少当前帧的目标码率;如果码率变化在该设定阈值范围内,则可保持当前帧的目标码率不变。 如果当前帧为非I帧编码,且检测到上一个已编码帧的码率与它的目标码率相比,编码码流长度起伏较大,或者当前帧的QP。与前一帧的QP。相比波动较大,则有可能会影响码率控制的效果,图像质量也会由于码流大小的不合理分配而打折扣,此时可启动重新计算(或调整)QP。、重新分配(或调整)当前帧的目标码率的操作,以此来达到抑制过大的码流波动、更合理地分配各帧目标码流大小,提高编码图像质量的目的。其中,码流长度(或码率)起伏的大小程度和QP波动的大小程度可以由相应的阈值进行界定,例如,将上一个已编码帧的码率与它的目标码率相比较,如果码率变化超过设定范围,或者初始QP值的变化超过设定范围,则需要重新计算当前帧的初始QP值和目标码率。 上述计算(包括重新计算)当前帧的初始QP值(即QP。)的过程中,计算QP。值的公式可以是QP。 = QPbase*(l+QPadj);其中QPbase可以是上一帧的平均QP值,QPadj为QP调整因子。当前帧目标码率的调整方法可以是当上一帧的实际码率大于该上一帧的目标帧码率超过一定范围的上限值(即码率变化超过设定范围的上限值)时,则减小当前帧的目标帧码率;相反(即码率变化超过设定范围的下限值),则增加当前帧的目标帧码率。
其中,QPadj可由上一帧的实际码率和该上一帧的目标帧码率决定,即在对当前帧进行码率控制开始之前,根据上一帧的实际码率和目标码率来确定出对当前帧进行码率控制所需的QPadj 。如果实际码率大于目标帧码率,则QPadj为一个正值,相反,则QPadj为一个负值。 重新计算QP。可以通过重新确定QPadj来实现,当检测到上述QP。波动较大的情况时,可重新确定一个新的QPadj值,使根据该QPadj计算得到的QP。值处于允许的波动范围之内,从而重新计算出QP。。还可以通过以下方式重新计算QP。如果当前帧的QP。与前一帧的QP。相比波动超过设定范围的下限值,则可以根据该下限值确定当前帧的QP。(如增加当前帧的QP。,使其与前一帧的QP。相比波动达到该下限值);如果当前帧的QP。与前一帧的QP。相比波动超过设定范围的上限值,则可以根据该上限值确定当前帧的QP。(如减小当前帧的QP。,使其与前一帧的QP。相比波动达到该上限值)。
步骤S504、开始对一行宏块进行码率控制。 该步骤除了接收并保存当前帧的QP。(如果通过场景自适应控制过程进行了调整,则是调整后的QP。)和当前帧的目标码率(如果通过场景自适应控制过程进行了调整,则是调整后的目标码率),还接收和处理相邻行(包括空间上的相邻或时间上的相邻,如前一行)宏块码率控制结束后(步骤S508)所反馈的统计信息。 步骤S505、根据当前帧的QP。和目标码率、已编码行编码结束后反馈的统计信息,
如码率、平均QP、 GOP等信息,计算得到当前行的行级码率控制的最终QP值。 该步骤可内嵌一个场景自适应控制过程,以便对那些同一画面中复杂和简单画面
分布较集中的场景进行控制,比如画面的上半部分是天空,而画面的下半部分是车水马龙
的场景。当此处检测到编码较简单的场景时,可自动调整行目标码率,以便待编码的各行
宏块的行目标码率得到重新分配,以达到更合理地分配码流、优化码率控制的效果,提高图
像质量。同理,当检测到编码较复杂的场景时,可重新分配行目标码率,以达到压制码率控制超标,均匀图像质量的效果;当检测到的编码复杂程度适中时,可不对行目标码率进行调整。其中,场景编码的复杂程度可由相应的阈值进行界定,例如,将上一个已编码行的码率与它的目标行码率相比,如果前者大于后者超过一定的阈值(即前者与后者相比得到的变化超过设定范围的上限值),则将减小当前帧中待编码行(尚未编码)的行目标码率;如果前者小于后者低于一定的阈值(即前者与后者相比得到的变化低于设定范围的下限值),则将增加当前帧中待编码行(尚未编码)的行目标码率。 如果对当前行的目标码率进行了调整,则可根据调整后的目标码率计算当前行的QP值。其中,当前行的目标码率可根据当前帧的初始QP值和目标码率,以及已编码行宏块的编码结果反馈信息计算得到。 步骤S506、对当前行的QP进行自适应限值控制。该步骤可选。
该步骤的QP自适应限值控制,主要的功能是完成空间或/和时间上的QP变化限值,减小QP值的波动性和图像质量的差异性。这里所谓空间上的限值即把当前行QP值与当前帧中的相邻行的QP值差值限制在一定范围之内,所谓时间上的限值即把当前行QP值与相邻帧对应行的QP值差值限制在一定范围之内。此处的限值控制可以是不固定的(即限值范围可根据具体情况而调整),因为在某些情况下如果按固定的方式对QP进行限值,就会发生QP增加不及时,码率超标的情况,此处的QP自适应控制就是一个可以检测并自动调整QP限值的过程,当可能发生码率超标时(例如可将上一个已编码行的码率与它的目标行码率相比,如果码率变化超过一定的阈值),会增大QP的波动范围。
如图6所示,假设当前行宏块为第k+l帧第n+l行,当前行宏块的QP值为QP(k+1,n+1)',当前帧相邻行QP值为QP(k+1,n),相邻帧对应行QP值为QP(k,n+1), X为空间上的QP自适应限值控制因子,T为时间上的QP自适应限值控制因子,CLIP为限值函数,则当前行的QP值限值过程为<formula>formula see original document page 11</formula>
步骤S507、根据确定出的当前行的QP和当前行的码率,对当前行宏块进行编码,该过程会产生码流。 步骤S508、结束对当前行宏块码率控制。 该步骤主要统计该行码率和步骤S505中场景自适应控制条件检测所需的信息等,并将统计的信息反馈回步骤S504,然后进行新的一行宏块的编码和码率控制计算。如果当前行宏块为该帧最后一行编码,则结束该帧编码。
步骤S509 、结束对一帧码率控制。 该步骤进行当前帧码率、平均QP等信息的统计,并反馈到步骤S502。 上述流程中,如果当前帧为第一帧,则在步骤502中,在对当前帧进行码率控制
时,其控制依据不包括前一帧编码结束时反馈回来的编码结果信息。如果当前行为第一帧
的首行,则步骤505中进行码率控制的依据不包括前一行宏块码率控制结束后所反馈的统
计信息。 基于相同的技术构思,本发明实施例还提供了一种视频编码中的码率控制装置,该装置可应用于以行宏块作为最小运算单元的码率控制过程。 如图7所示,该装置可包括获取模块10、确定模块20、反馈模块30,其中
获取模块IO,用于获取当前帧的初始码率控制参数,如,初始QP值和目标码率;
确定模块20,与获取模块IO连接,用于根据获取模块IO获取到的当前帧的初始码率控制参数、已编码行宏块的编码结果反馈信息,以及编码场景,确定当前行的QP值;
反馈模块30,与确定模块20连接,用于将根据确定模块20确定出的当前行的QP值对当前行进行宏块编码后得到的编码结果信息反馈给确定模块20。 上述装置还可包括第一场景自适应单元ll,分别与获取模块10和确定模块20连接,用于根据编码场景调整所述获取模块获取到的初始码率控制参数。相应的,确定模块20具体用于根据第一场景自适应单元11调整后的当前帧的初始码率控制参数、所述反馈信息以及编码场景确定当前行的QP值。 其中,第一场景自适应单元ll可具体用于若当前帧为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围的上限值,则将当前帧的目标码率减小;或者,若当前帧为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围的下限值,则将当前帧的目标码率增加;或者,若当前帧为非I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围,通过调整QP调整因子,使根据该QP调整因子得到的当前帧的初始QP值与上一个已编码帧的初始QP值的变化在设定范围之内;或者,当前帧的初始QP值与其上一个已编码帧的初始QP相比得到的QP变化超过设定阈值范围的上限值,则减少重新确定当前帧的初始QP值,使减小后的QP值与上一个已编码帧的初始QP值的变化达到该设定范围的上限值;或者,当前帧的初始QP值与其上一个已编码帧的初始QP相比得到的QP变化超过设定范围阈值的下限值,则增加当前帧的初始QP值,使增加后的QP值与上一个已编码帧的初始QP值达到该设定范围的下限值。
上述装置中的确定模块20可包括 行目标码率确定单元201,用于根据当前帧的初始码率控制参数、已编码行宏块的编码结果反馈信息,以及当前帧的场景,确定当前行的目标码率; 第二场景自适应单元202,与行目标码率确定单元201连接,用于根据编码场景调整当前行的目标码率; 行QP值确定单元203,与第二场景自适应单元202连接,用于根据第二场景自适应单元202调整后的当前行的目标码率确定当前行的QP值。 其中,第二场景自适应单元202可具体用于将上一个已编码行的码率与该编码行的行目标码率相比得到的变化超过设定范围的上限值,则减小当前帧中待编码行的行目标码率;如果前者与后者相比得到的变化低于设定范围的下限值,则增加当前帧中待编码行的行目标码率。 上述装置中的确定模块20还可进一步包括QP自适应单元204,与行QP值确定单元203连接,用于通过调整QP值确定单元203确定出的当前行的QP值,使将当前行的QP值与当前帧相邻行的QP值的差值限制在设定范围内;或/和,通过调整当前行的QP值,使当前行的QP值与相邻帧对应行的QP值的差值限制在设定范围内。 其中,QP自适应单元203可具体用于若上一个已编码行的码率与该已编码行的目标行码率相比,差值超过设定阈值,则增大所述设定范围。 综上所述,本发明的上述实施例,通过以一行宏块作为码率控制最小计算单元的方式,降低计算复杂度;进一步的,在码率控制过程中引入了自适应场景控制和自适应QP限值控制,以使码率控制能更好地适应各种不同的场景,在控准码率使其不超标的前提下,尽量使更多的码流分配到图像较复杂的行和帧,提高编码的图像质量。 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
权利要求
一种视频编码中的码率控制方法,应用于以行宏块作为最小运算单元的码率控制过程,其特征在于,针对当前行宏块,包括以下步骤获取当前帧的初始码率控制参数;根据当前帧的初始码率控制参数、已编码行宏块的编码结果反馈信息,以及编码场景,确定当前行的QP值;反馈根据当前行的QP值对当前行进行宏块编码后所得到的编码结果信息。
2. 如权利要求1所述的方法,其特征在于,获取当前帧的初始码率控制参数之后,还包 括根据编码场景调整获取到的初始码率控制参数;确定当前行的QP值,具体为根据调整后的当前帧的初始码率控制参数、所述反馈信 息以及编码场景确定当前行的QP值。
3. 如权利要求2所述的方法,其特征在于,根据编码场景调整获取到的初始码率控制 参数,包括根据编码场景调整当前帧的目标码率,或调整当前帧的初始QP值和目标码率。
4. 如权利要求3所述的方法,其特征在于,根据编码场景调整当前帧的目标码率,包括当前帧为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相 比得到的码率变化超过设定范围的上限值,则将当前帧的目标码率减小;或者,当前帧的为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目 标码率相比得到的码率变化超过设定范围的下限值,则将当前帧的目标码率增加。
5. 如权利要求3所述的方法,其特征在于,根据编码场景调整当前帧的初始QP值和目 标码率,包括当前帧为非I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范围时,通过调整QP调整因子,使根据该QP调整因子得到的 当前帧的初始QP值与上一个已编码帧的初始QP值的变化在设定范围之内;或者,当前帧的初始QP值与其上一个已编码帧的初始QP相比得到的QP变化超过设定 阈值范围的上限值,则减少重新确定当前帧的初始QP值,使减小后的QP值与上一个已编码 帧的初始QP值的变化达到该设定范围的上限值;或者,当前帧的初始QP值与其上一个已 编码帧的初始QP相比得到的QP变化超过设定范围阈值的下限值,则增加当前帧的初始QP 值,使增加后的QP值与上一个已编码帧的初始QP值达到该设定范围的下限值。
6. 如权利要求1所述的方法,其特征在于,确定当前行的QP值,包括 根据当前帧的初始QP值和目标码率,以及已编码行宏块的编码结果反馈信息,确定当前行的目标码率;根据编码场景调整当前行的目标码率; 根据调整后的当前行的目标码率确定当前行的QP值。
7. 如权利要求6所述的方法,其特征在于,根据编码场景调整当前行的目标码率,包括将上一个已编码行的码率与该编码行的行目标码率相比得到的变化超过设定范围的上限值,则减小当前帧中待编码行的行目标码率;如果前者与后者相比得到的变化低于设 定范围的下限值,则增加当前帧中待编码行的行目标码率。
8. 如权利要求1所述的方法,其特征在于,根据当前帧的初始QP值和目标码率,以及所述反馈信息,确定当前行的QP值之后,还包括通过调整当前行的QP值,使将当前行的QP值与当前帧相邻行的QP值的差值限制在设 定范围内;或/和,通过调整当前行的QP值,使当前行的QP值与相邻帧对应行的QP值的差值限 制在设定范围内。
9. 如权利要求8所述的方法,其特征在于,若上一个已编码行的码率与该已编码行的 目标行码率相比,差值超过设定阈值,则增大所述设定范围。
10. 如权利要求1至9任一项所述的方法,其特征在于,所述编码结果反馈信息,包括 行编码码率。
11. 一种视频编码中的码率控制装置,应用于以行宏块作为最小运算单元的码率控制过程,其特征在于,包括获取模块,用于获取当前帧的初始码率控制参数;确定模块,与所述获取模块连接,用于根据所述获取模块获取到的当前帧的初始码率 控制参数、已编码行宏块的编码结果反馈信息,以及编码场景,确定当前行的QP值;反馈模块,与所述确定模块连接,用于将根据所述确定模块确定出的当前行的QP值对 当前行进行宏块编码后得到的编码结果信息反馈给所述确定模块。
12. 如权利要求ll所述的装置,其特征在于,还包括第一场景自适应单元,分别与所述获取模块和所述确定模块连接,用于根据编码场景 调整所述获取模块获取到的初始码率控制参数;所述确定模块具体用于,根据所述第一场景自适应单元调整后的当前帧的初始码率控 制参数、所述反馈信息以及编码场景确定当前行的QP值。
13. 如权利要求12所述的装置,其特征在于,所述第一场景自适应单元具体用于,若当 前帧为I帧编码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到 的码率变化超过设定范围的上限值,则将当前帧的目标码率减小;或者,若当前帧为I帧编 码,且该当前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超 过设定范围的下限值,则将当前帧的目标码率增加;或者,若当前帧为非I帧编码,且该当 前帧的上一个已编码帧的码率与该已编码帧的目标码率相比得到的码率变化超过设定范 围,通过调整QP调整因子,使根据该QP调整因子得到的当前帧的初始QP值与上一个已编 码帧的初始QP值的变化在设定范围之内;或者,当前帧的初始QP值与其上一个已编码帧的 初始QP相比得到的QP变化超过设定阈值范围的上限值,则减少重新确定当前帧的初始QP 值,使减小后的QP值与上一个已编码帧的初始QP值的变化达到该设定范围的上限值;或 者,当前帧的初始QP值与其上一个已编码帧的初始QP相比得到的QP变化超过设定范围阈 值的下限值,则增加当前帧的初始QP值,使增加后的QP值与上一个已编码帧的初始QP值 达到该设定范围的下限值。
14. 如权利要求10或11所述的装置,其特征在于,所述确定模块包括 行目标码率确定单元,用于根据当前帧的初始码率控制参数、已编码行宏块的编码结果反馈信息,以及当前帧的场景,确定当前行的目标码率;第二场景自适应单元,与所述行目标码率确定单元连接,用于根据编码场景调整当前行的目标码率;行QP值确定单元,与所述第二场景自适应单元连接,用于根据所述第二场景自适应单 元调整后的当前行的目标码率确定当前行的QP值。
15. 如权利要求14述的装置,其特征在于,所述第二场景自适应单元具体用于,将上一 个已编码行的码率与该编码行的行目标码率相比得到的变化超过设定范围的上限值,则减 小当前帧中待编码行的行目标码率;如果前者与后者相比得到的变化低于设定范围的下限 值,则增加当前帧中待编码行的行目标码率。
16. 如权利要求14所述的装置,其特征在于,所述确定模块还包括QP自适应单元,与所述行QP值确定单元连接,用于通过调整所述QP值确定单元确定出 的当前行的QP值,使将当前行的QP值与当前帧相邻行的QP值的差值限制在设定范围内; 或/和,通过调整当前行的QP值,使当前行的QP值与相邻帧对应行的QP值的差值限制在 设定范围内。
17. 如权利要求16所述的装置,其特征在于,所述QP自适应单元具体用于,若上一个已 编码行的码率与该已编码行的目标行码率相比,差值超过设定阈值,则增大所述设定范围。
全文摘要
本发明公开了一种视频编码中的码率控制方法及其装置,应用于以行宏块作为最小运算单元的码率控制过程。本发明方法包括针对当前行宏块,包括以下步骤获取当前帧的初始码率控制参数;根据当前帧的初始码率控制参数、已编码行宏块的编码结果反馈信息,以及编码场景,确定当前行的QP值;反馈根据当前行的QP值对当前行进行宏块编码后所得到的编码结果信息。采用本发明,可实现在控准码率的前提之下尽可能地提升编码图像质量。
文档编号H04N7/26GK101795415SQ20101015223
公开日2010年8月4日 申请日期2010年4月22日 优先权日2010年4月22日
发明者李聪廷, 谭炽烈, 郑晓先, 陈航锋 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1