比特率控制方法与比特率控制系统转让专利

申请号 : CN201210230886.X

文献号 : CN103533365B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李英田丹

申请人 : 珠海扬智电子科技有限公司

摘要 :

一种比特率控制方法,用以调整一个量化参数。此量化参数是用以控制在编码一个目前帧中多个基本单元时所产生的比特率。此比特率控制方法包括:根据第一先前帧的残差值经过空间至频率转换后的值来取得一个转换误差,其中第一先前帧的编码顺序是在目前帧的编码顺序之前;根据转换误差,取得一个基本单元的预测比特数;以及,根据预测比特数调整量化参数。藉此,可以快速的完成比特率控制。另一方面,一种使用此方法的比特率控制系统亦被提出。

权利要求 :

1.一种比特率控制方法,用以调整一量化参数,该量化参数用以控制一编码器用于编码一目前帧中多个基本单元时的比特率,该比特率控制方法包括:根据一第一先前帧的一残差值经过一空间至频率转换后的值,取得该第一先前帧的一转换误差,其中该第一先前帧的编码顺序是在该目前帧的编码顺序之前;

根据该转换误差,取得该些基本单元中一第一基本单元的一预测比特数;

根据该预测比特数调整该量化参数;以及

该编码器依据调整后的该量化参数,调整该比特率,并以调整后的该比特率编码该目前帧,其中该第一先前帧与该目前帧皆都包括多个宏块行,该些基本单元为该目前帧的该些宏块行,其中该预测比特数以Ri表示,则

其中QP为该量化参数,SUM_SATDi为该目前帧第i个宏块行的转换误差,

其中,N为该第一先前帧的该些宏块行的个数,ri为该第一先前帧中第i个宏块行的一残差值比特数,SATD_SUMi为该第一先前帧中第i个宏块行的转换误差,Qi为该第一先前帧中第i个宏块行的量化参数。

2.根据权利要求1所述的比特率控制方法,每一该些宏块行包括多个宏块,其中取得该第一先前帧的该转换误差的步骤包括:取得该第一先前帧的该些宏块行的其中之一的各该些宏块的一宏块转换误差;以及根据该些宏块转换误差的和产生该第一先前帧的该转换误差。

3.根据权利要求1所述的比特率控制方法,其中根据该转换误差,取得该些基本单元中该第一基本单元的该预测比特数的步骤包括:将该转换误差与该量化参数代入一二次方程式,以计算出该预测比特数。

4.根据权利要求1所述的比特率控制方法,其中根据该预测比特数,调整该量化参数的步骤包括:根据一预测比特数总和与该目前帧的一已编码比特数,取得该目前帧的一帧预测比特数,其中该预测比特数总和,表示该目前帧中尚未被编码的宏块行的预测比特数的总和。

5.根据权利要求4所述的比特率控制方法,其中调整该量化参数的步骤更包括:根据一缓冲存储器的一充盈度与该缓冲存储器的一剩余度计算一第一数值;

根据该目前帧的一帧规划大小与一比特率控制容差计算一第二数值;以及若调整后的该帧预测比特数大于该第一数值或大于该第二数值,增加该量化参数。

6.根据权利要求4所述的比特率控制方法,其中调整该量化参数的步骤更包括:根据该目前帧的一帧规划大小计算一第三数值;

根据一缓冲存储器的一充盈度、一帧比特率与一额定比特率计算一第四数值;以及若调整后的该帧预测比特数小于该第三数值或小于该第四数值,减少该量化参数。

7.根据权利要求4所述的比特率控制方法,其中该量化参数是从一调整前量化参数被调整为一调整后量化参数,其中根据该预测比特数与该目前帧的该已编码比特数,取得该目前帧的该帧预测比特数的步骤更包括:根据该调整前量化参数与该调整后量化参数的一比值、该预测比特数与该已编码比特数,以调整该目前帧的该帧预测比特数。

8.一种比特率控制系统,用以调整一量化参数,该量化参数用以控制一编码器用于编码一目前帧中多个基本单元时的比特率,该比特率控制系统包括:一复杂度计算单元,用以根据一第一先前帧的一残差值经过一空间至频率转换后的值来取得该第一先前帧的一转换误差,其中该第一先前帧的编码顺序是在该目前帧的编码顺序之前;

一更新与预测单元,耦接至该复杂度计算单元,根据该转换误差,取得该些基本单元中一第一基本单元的一预测比特数;以及一量化参数调整单元,耦接至该更新与预测单元及该编码器,根据该预测比特数调整该量化参数,以使该编码器依据调整后的该量化参数调整该比特率,并使该编码器以调整后的该比特率编码该目前帧,其中该第一先前帧与该目前帧皆都包括多个宏块行,该些基本单元为该目前帧的该些宏块行,其中该预测比特数以Ri表示,则

其中QP为该量化参数,SUM_SATDi为该目前帧第i个宏块行的转换误差, 而

其中,N为该第一先前帧的该些宏块行的个数,ri为该第一先前帧中第i个宏块行的一残差值比特数,SATD_SUMi为该第一先前帧中第i个宏块行的转换误差,Qi为该第一先前帧中第i个宏块行的量化参数。

9.根据权利要求8所述的比特率控制系统,每一该些宏块行包括多个宏块,其中该复杂度计算单元更用以取得该第一先前帧的该些宏块行的其中之一的各该些宏块的一宏块转换误差,并且根据该些宏块转换误差的和产生该第一先前帧的该转换误差。

10.根据权利要求8所述的比特率控制系统,其中该更新与预测单元更用以将该转换误差与该量化参数代入一二次方程式,以计算出该预测比特数。

11.根据权利要求8所述的比特率控制系统,更包括:

一缓冲存储器,耦接至该更新与预测单元,

其中,该更新与预测单元更用以根据一预测比特数总和与该目前帧的一已编码比特数来取得该目前帧的一帧预测比特数,其中该预测比特数总和,表示该目前帧中尚未被编码的宏块行的预测比特数的总和。

12.根据权利要求11所述的比特率控制系统,其中该量化参数调整单元更用以根据该缓冲存储器的一充盈度与该缓冲存储器的一剩余度计算一第一数值,根据该目前帧的一帧规划大小与一比特率控制容差计算一第二数值,其中,则若该帧预测比特数大于该第一数值或大于该第二数值,该量化参数调整单元更用以增加该量化参数。

13.根据权利要求11所述的比特率控制系统,其中该量化参数调整单元更用以根据该目前帧的一帧规划大小计算一第三数值,并根据一充盈度、一帧比特率与一额定比特率计算一第四数值,其中,若该帧预测比特数小于该第三数值或小于该第四数值,则该量化参数调整单元更用以减少该量化参数。

14.根据权利要求11所述的比特率控制系统,其中该量化参数是从一调整前量化参数被调整为一调整后量化参数,其中该更新与预测单元更用以根据该调整前量化参数与该调整后量化参数的一比值、该预测比特数与该已编码比特数,以调整该目前帧的该帧预测比特数。

说明书 :

比特率控制方法与比特率控制系统

技术领域

[0001] 本发明是有关于一种比特率控制方法,且特别是有关于一种视频编码的比特率控制方法与比特率控制系统。

背景技术

[0002] 人类生活中充斥着各种视频数据,也充斥着传输这些视频数据的各种活动。然而,由于视频数据的数据量通常很庞大,因此传输的通道不一定能提供这么大的传输频宽。当传输的通道不能提供足够的传输频宽时,会导致视频数据的品质下降。另一方面,在编码视频数据以后,所产生的比特率也不会维持固定,这是由于编码后的比特率会随着视频数据的内容的复杂度而改变。
[0003] 一般来说,一个视频数据可以分为多个帧(frame),每个帧可以分为多个切片(slice),而每个切片可以分为多个宏块(macroblock)。在执行比特率控制的演算法时,通常可以增加或减少每个宏块的量化参数(quantization parameter)来调整每个宏块所编码后的比特数。然而,在编码之前每个宏块所会产生的比特数是未知的。因此,若要准确地预测编码后的比特数来调整量化参数,所需的计算量通常会很大。也就是说,当要编码一个视频数据时,如何控制编码后的比特率能够维持固定、达到快速甚至及时的编码以及同时提升视频数据的品质,为此领域技术人员所关心的议题。

发明内容

[0004] 本发明的范例实施例提出一种比特率控制方法与比特率控制系统,可以快速的完成比特率控制。
[0005] 本发明一范例实施提出一种比特率控制方法,用以调整一个量化参数。此量化参数是用以控制编码器用于编码一个目前帧中多个基本单元时的比特率。此比特率控制方法包括根据第一先前帧的一个残差值经过一个空间至频率转换后的值,取得第一先前帧的转换误差。其中第一先前帧的编码顺序是在目前帧的编码顺序之前。此比特率控制方法还包括根据转换误差,取得所述基本单元中一个第一基本单元的预测比特数。此比特率控制方法更包括根据预测比特数调整量化参数。此比特率控制方法还包括编码器依据调整后的量化参数,调整上述比特率,并以调整后的比特率编码上述的目前帧。
[0006] 在一范例实施例中,上述的第一先前帧包括多个切片(slice),每一个切片包括多个宏块行,每一个宏块行包括多个宏块。上述取得第一先前帧的转换误差的步骤包括:取得一个宏块行中各个宏块的宏块转换误差,以及根据这些宏块转换误差的和产生转换误差。
[0007] 在一范例实施例中,上述根据转换误差取得所述基本单元中第一基本单元的预测比特数的步骤包括:将转换误差与量化参数代入一个二次方程式,以计算出上述的预测比特数。
[0008] 在 一 范 例 实 施 例 中 ,上 述 的 预 测 比 特 数 以 R i 表 示 ,则其中a与b各为一实数,QP为量化参数,SUM_SATDi为当前帧第i个宏块行的转换误差。
[0009] 在一范例实施例中,第一先前帧与目前帧皆都包括多个宏块行,上述的基本单元为目前帧的宏块行。上述的比特率控制方法更包括更新实数a与实数b。其中而 N为第一先前帧的宏块行的个数,ri为第一先前帧中第i个宏块行的一个残差值比特数,SATD_SUMi为第一先前帧中第i个宏块行的转换误差,Qi为第一先前帧中第i个宏块行的量化参数。
[0010] 在一范例实施例中,上述的目前帧的总比特是暂存在一个缓冲存储器。其中根据预测比特数调整量化参数的步骤包括:根据预测比特数与目前帧的已编码比特数以调整目前帧的一个帧预测比特数。
[0011] 在一范例实施例中,上述调整量化参数的步骤更包括:根据缓冲存储器的充盈度与缓冲存储器的剩余度计算第一数值;根据目前帧的帧规划大小与比特率控制容差计算第二数值;以及若调整后的帧预测比特数大于第一数值或大于第二数值,则增加量化参数。
[0012] 在一范例实施例中,上述调整量化参数的步骤更包括:根据目前帧的帧规划大小计算第三数值;根据缓冲存储器的充盈度、帧比特率与额定比特率计算第四数值;以及若调整后的帧预测比特数小于第三数值或小于第四数值,则减少量化参数。
[0013] 在一范例实施例中,上述量化参数是从一个调整前量化参数被调整为一个调整后量化参数。上述根据预测比特数与目前帧的已编码比特数,取得目前帧的帧预测比特数的步骤更包括:根据调整前量化参数与调整后量化参数的一个比值、预测比特数与已编码比特数,以调整目前帧的帧预测比特数。
[0014] 以另外一个角度来说,本发明一范例实施例提出一种比特率控制系统,用以调整上述的量化参数。此比特率控制系统包括复杂度计算单元、更新与预测单元以及量化参数调整单元。复杂度计算单元用以根据一个第一先前帧的一个残差值经过一个空间至频率转换后的值来取得第一先前帧的转换误差。其中第一先前帧的编码顺序是在目前帧的编码顺序之前。更新与预测单元是耦接至复杂度计算单元,用以根据转换误差,取得所述基本单元中第一基本单元的预测比特数。量化参数调整单元耦接至上述的更新与预测单元及上述的编码器,用以根据预测比特数调整量化参数,以使编码器依据调整后的量化参数调整比特率,并使编码器以调整后的比特率编码目前帧。
[0015] 基于上述,本发明范例实施例所提出的比特率控制方法与比特率控制系统,是根据转换误差来调整量化参数。因此,可以加速比特率控制的执行。
[0016] 为让本发明之上述特征和优点能更明显易懂,下文特举实施例,并配合所附图式作详细说明如下。

附图说明

[0017] 图1是根据一实施例所绘示的编码系统的范例示意图。
[0018] 图2是根据一实施例所绘示的比特率控制系统的方块图。
[0019] 图3是根据一实施例说明计算转换误差的范例示意图。
[0020] 图4是根据一实施例说明缓冲存储器的充盈度的范例示意图。
[0021] 图5是根据一实施例说明比特率控制方法的流程图。
[0022] 主要元件符号说明
[0023] 100:编码系统
[0024] 102:未编码视频
[0025] 104:编码后视频
[0026] 106:复杂度
[0027] 108:额定比特率
[0028] 110:量化参数
[0029] 112:比特率
[0030] 120:编码器
[0031] 140:比特率控制系统
[0032] 202:复杂度计算单元
[0033] 204:更新与预测单元
[0034] 206:图像群比特分配单元
[0035] 208:基本单元比特分配单元
[0036] 210:缓冲存储器
[0037] 212:量化参数调整单元
[0038] 214:量化参数初始单元
[0039] 216:转换误差
[0040] 218:充盈度
[0041] 220:帧规划大小
[0042] 222:目标比特数
[0043] 224:所需量化参数
[0044] 226:初始量化参数
[0045] 228:残差值比特数
[0046] 230:总比特
[0047] 232:初始缓冲占用度
[0048] 234:缓冲容量
[0049] 320:目前帧
[0050] 340、360:先前帧
[0051] 321、322、342:宏块行
[0052] 324、326、328、344、346、348、362、364:宏块
[0053] 402、404:曲线
[0054] S502、S504、S506:比特率控制方法的步骤

具体实施方式

[0055] 图1是根据一实施例所绘示的编码系统的范例示意图。
[0056] 请参照图1,编码系统100包括编码器120与比特率控制系统140。编码系统100可以被配置在个人电脑、智慧型手机、平板电脑、数位摄影机或者是伺服器上,本发明并不在此限。
[0057] 编码器120是用以接收未编码视频102,并产生编码后视频104。例如,未编码视频102是一段影片的比特流(bit stream)。例如,编码后视频104是符合H.264规格的比特流。
然而,编码后视频104也可以是符合MPEG-4(Moving Picture Experts Group-4)规格的比特流。本发明并不限制未编码视频102与编码后视频104的格式。
[0058] 比特率控制系统140是用以接收视频复杂度106,并根据额定比特率108来产生量化参数110。例如,视频复杂度106是在编码一个帧(frame)时多个宏块(macroblock)的残差值(residual)。具体来说,一段视频会包括多个图像群(group of picture,GOP),每一个图像群会包括多个帧,每一个帧会包括多个切片(slice),而每一个切片会包括多个宏块。当编码以压缩未编码视频102时,会计算一个宏块中的残差值,并将这些残差值做数位余弦转换(discrete cosine transform)。例如,这些残差值是经过空间或时间上的预测所取得的。经过余弦转换后的值会经过量化,接着再做熵编码(entropy encoding)以产生编码后视频104。因此,残差值越大时,表示未编码视频102越复杂,而编码后视频104的比特率(bit rate)也会越大。额定比特率108是由使用者所设定的比特率。比特率控制系统140会根据视频复杂度106调整量化参数110,使得编码后视频104的比特率会等于额定比特率108。另外,在编码完未编码视频102以后,编码器120会将编码后的比特率112传送给比特率控制系统140。因此,比特率控制系统140可以根据比特率112来调整决定量化参数110的演算法。在本实施例中,一个帧中在同一行上的多个宏块会组成一个宏块行(亦称为基本单元),而每一个基本单元会使用相同的一个量化参数。然而,每一个基本单元也可是其它数目的宏块所组成,本发明并不在此限。
[0059] 图2是根据一实施例所绘示的比特率控制系统的方块图。
[0060] 请参照图2,比特率控制系统140包括复杂度计算单元202、更新与预测单元204、图像群比特分配单元206、基本单元比特分配单元208、缓冲存储器210、量化参数调整单元212与量化参数初始单元214。
[0061] 缓冲存储器210例如为动态随机存取存储器(dynamic random access memory,RAM)。然而,缓冲存储器210也可以是静态随机存取存储器,本发明并不在此限。缓冲存储器210还会接收缓冲容量(buffer capacity)234以及初始缓冲占用度(initial buffer occupancy)232。缓冲容量234用以指示缓冲存储器210的容量,初始缓冲占用度232用以指示在初始状态时,缓冲存储器210被使用的比率。缓冲存储器会210会提供充盈度218给图像群比特分配单元206与基本单元比特分配单元208。例如,充盈度218表示缓冲存储器210中有多少比率的存储器空间被用来储存数据。
[0062] 图像群比特分配单元206会接收额定比特率108及充盈度218,并依据额定比特率108及充盈度218决定每一个图像群要用多少比特来编码。另一方面,图像群比特分配单元
206也会决定图像群中每个帧的帧规划大小220并将此传送给基本单元比特分配单元208。
例如,帧规划大小220是预计编码一个帧所需要的比特数。
[0063] 基本单元比特分配单元208会接收帧规划大小220与充盈度218,并依据帧规划大小220与充盈度218计算每一个基本单元的目标比特数222。例如,目标比特数222是编码一个基本单元预计要使用的比特数。
[0064] 复杂度计算单元202会接收视频复杂度106,并基于视频复杂度106计算出转换误差216。如上所述,视频复杂度106是一个帧的残差值。复杂度计算单元202会对这些残差值做一个空间至频率转换以得到转换误差216。例如,转换误差216亦被称为绝对转换误差和(Sum of absolute transformed differences,SATD),而此空间至频率转换例如为哈达玛转换(Hadamard transform)。然而,此空间至频率转换也可以是数位余弦转换或其他由空间域转为频率域的转换,本发明并不在此限。本实施例中,比特率控制系统140是使用转换误差216来预测编码一个基本单元所需要的比特数,进而达到比特率控制的目的。
[0065] 更新与预测单元204会接收转换误差216与目标比特数222,并依据转换误差216与目标比特数222产生所需量化参数224。所需量化参数224是预计一个基本单元的量化参数,藉此控制编码此基本单元时所产生的比特率。例如,更新与预测单元204会根据转换误差216来预测一个基本单元的一个预测比特数。此预测比特数表示预计编码一个基本单元所需要的比特数。例如,当一个基本单元的转换误差216越大时,预测比特数便会越大。当目标比特数222很小且预测比特数很大时,更新与预测单元204会增加所需量化参数224。
[0066] 量化参数调整单元212会接收所需量化参数224,并依据所需量化参数224调整并输出量化参数110。当在编码一段比特流的初始阶段时,量化参数调整单元212也会从量化参数初始单元214中读取初始量化参数226,并调整初始量化参数226而产生量化参数110。
[0067] 在输出量化参数110以后,比特率控制系统140也会从编码器120取得比特率112。比特率112会包括残差值比特数228与总比特230。例如,残差值比特数228表示编码一个基本单元的中残差值所需的比特数。而总比特230为编码一个基本单元所需要的比特。例如,编码一个基本单元时,不只需要编码残差值,也需要编码动作向量(motion vector)以及一些预测模式(prediction mode)。更新与预测单元204可以根据残差值比特数228来调整编码下一个基本单元所使用的量化参数。而总比特230会储存在缓冲存储器210中,进而改变充盈值218。
[0068] 图3是根据一实施例说明计算转换误差的范例示意图。
[0069] 请参照图3,目前帧320包括宏块行321与宏块行322,宏块行322包括宏块324及326~328。先前帧340(亦称第一先前帧)是已经编码完的帧,其中包括宏块行342,而宏块行342包括宏块344及346~348。先前帧360也是已经编码完的帧,其中包括宏块362与宏块364。也就是说,先前帧340与360的编码顺序在目前帧320的编码顺序之前。宏块行322是目前要编码的宏块行。复杂度计算单元202会计算出宏块行342的转换误差,藉此让更新与预测单元204计算宏块行322的预测比特数。宏块行342与宏块行322的位置相同。例如,宏块行322是目前帧320中第8个宏块行,而宏块行342也是先前帧中第8的宏块行。由于相同位置的宏块行也会需要相似数目的比特数,因此宏块行342的转换误差可以用来计算宏块行322的预测比特数。在本实施例中,先前帧340是一个P帧(P frame),因此,先前帧340的残差值是由先前帧360预测而来。更具体来说,复杂度计算单元202会使用由方程式(1)来求得宏块行342的转换误差。
[0070]
[0071] 其中,SATDi为宏块行342中第i个宏块(例如,宏块344、346或348)的宏块转换误差,SUM_SATD为宏块行342的转换误差,而宏块行342包括(N+1)个宏块。复杂度计算单元202是根据先前帧340与先前帧360计算出每个宏块的宏块转换误差。例如,宏块344的宏块转换误差是将宏块344与宏块362之间的像素值的绝对误差做空间至频率转换之后所得到的。例如,宏块348的宏块转换误差是将宏块348与宏块364之间的像素值的绝对误差做空间至频率转换之后所得到的。
[0072] 然而,若先前帧340是属于I帧(I frame),则帧中的每一个帧转换误差是根据空间上的预测所取得。具体来说,每一个宏块可以经由其邻近的宏块所预测,而预测之后的误差便是残差值。将此残差值经做空间至频率转换以后便会得到一个宏块的宏块转换误差。然而,本发明并不限制宏块转换误差是经由时间或是空间的预测所得到的。
[0073] 接下来,更新与预测单元204会产生实数a与实数b,并利用实数a与实数b来预测编码宏块行322所需要的比特数。具体来说,实数a与实数b在编码开始之前会分别是一个初始值。在编码过程中,更新与预测单元204会根据先前帧340编码过程中回传的每个宏块行的残差值比特数228,先前帧340的每一个宏块行的转换误差以及在编码先前帧340中的宏块行时所使用的量化参数,来求得实数a与实数b。例如,更新与预测单元204是根据方程式(2)与方程式(3)来更新实数a与实数b。
[0074]
[0075]
[0076] 其中,N为先前帧340中宏块行的个数,ri为先前帧第i个宏块行的残差值比特数。SUM_SATDi为先前帧340第i个宏块行的转换误差,Qi为先前帧340第i个宏块行的量化参数。
因此,在编码每一个帧之前,实数a与实数b就会被更新。
[0077] 接下来,更新与预测单元204会将当前帧320每一个宏块行的转换误差SUM_SATDi以及量化参数代入一个二次方程式以求得当前帧320每一个宏块行的预测比特数。例如,此二次方程式可以由方程式(4)来表示。
[0078]
[0079] 其中a与b各为方程式(3)与方程式(2)求得的实数。QP为量化参数,例如,更新与预测单元204是将先前帧340最后一个宏块行所使用的量化参数来当作当前帧的初始量化参数。SUM_SATDi为方程式(1)所计算的当前帧第i个宏块行的转换误差。i为整数,表示目前帧320中第i个宏块行。Ri为目前帧320中第i个宏块行的预测比特数。
[0080] 在目前帧320完全都未被编码时,更新与预测单元204会根据方程式(4)所计算出的预测比特数Ri来预测目前帧320中尚未被编码的宏块行的预测比特数的总和。例如,更新与预测单元204会使用方程式(5)来计算一个预测比特数总和。
[0081]
[0082] 其中,row_size_sum为预测比特数总和,表示目前帧320中尚未被编码的宏块行的预测比特数的总和。i为一个整数,表示目前帧320中尚未被编码的宏块行的编号。M为目前帧320中宏块行的个数。也就是说,在目前帧320完全都未被编码时,预测比特数总和row_size_sum是所有预测比特数Ri的总和。
[0083] 然而,在每编码完一个宏块行以后,更新与预测单元204便会更新预测比特数总和row_size_sum。例如,更新与预测单元204会使用方程式(6)来更新预测比特数总和row_size_sum。
[0084] row_size_sum=row_size_sum-Ri…(6)
[0085] 其中,Ri已编码完的宏块行的预测比特数。举例来说,当编码完宏块行321以后,更新与预测单元204可以取得宏块行321残差值比特数228。因此,宏块行321已不属于未编码的宏块行。更新与预测单元204会把宏块行321的预测比特数Ri从预测比特数总和row_size_sum中减去。
[0086] 接下来,更新与预测单元204会根据目前帧320的预测比特数总和row_size_sum与目前帧320的一个已编码比特数,取得目前帧320的一个帧预测比特数。例如,更新与预测单元204会使用方程式(7)来取得帧预测比特数。
[0087] b1=i_row_bits_sum+row_size_sum…(7)
[0088] 其中,i_row_bits_sum为目前帧320的已编码比特数,b1为目前帧320的帧预测比特数。i_row_bits_sum表示编码目前帧320中已被编码的宏块行所使用的比特个数的总和。帧预测比特数b1是一个估计值,表示编码完目前帧320所会使用的比特个数。在目前帧320完全都未被编码时,i_row_bits_sum为0。在编码完一个宏块行以后,更新与预测单元204会将此宏块行的残差值比特数累加至已编码比特数i_row_bits_sum。
[0089] 举例来说,宏块行321是已编码完的宏块行,因此编码器120也会将宏块行321的残差值比特数228传送回更新与预测单元204。更新与预测单元204会根据传送回来的残差值比特数228更新已编码比特数i_row_bits_sum,并且重新计算当前帧预测比特数b1。例如,更新与预测单元204会使用方程式(8)来更新已编码比特数i_row_bits_sum,并且根据方程式(9)重新计算帧预测比特数b1。
[0090] i_row_bits_sum=i_row_bits_sum+ri…(8)
[0091] b1i=b1i-1-Ri+ri…(9)
[0092] 其中,ri为第i个宏块行的残差值比特数228。b1i-1为编码第i-1个宏块行时所使用的帧预测比特数b1。
[0093] 接下来,量化参数调整单元212会根据帧预测比特数b1的上限值及下限值来调整量化参数110。具体来说,量化参数调整单元212是依据缓冲存储器210的充盈度、缓冲存储器210的一个剩余度、目前帧320的帧规划大小,来计算出帧预测比特数b1的上限值。其中,充盈度表示缓冲存储器210中已储存数据的存储器空间的比率。剩余度表示缓冲存储器210的闲置存储器空间。帧规划大小表示图像群比特分配单元206所规划并分配给目前帧320的比特数。例如,量化参数调整单元212会使用方程式(10)来计算帧预测比特数b1的上限值b1_max。
[0094] b1_max=min(buffer_fill-buffer_left_planned×k,
[0095] frame_size_planned+rc_tol)…(10)
[0096] 其中,buffer_fill为缓冲存储器210的充盈度。buffer_left_planned为缓冲存储器210的剩余度。frame_size_planned为目前帧320的帧规划大小。rc_tol被称为比特率控制容差,是一个实数。k是一个实数,例如为0.5。min()为最小值运算。
[0097] 当判断帧预测比特数b1大于上限值b1_max,则量化参数调整单元212会增加量化参数一个预设值。换句话说,量化参数调整单元212会根据缓冲存储器210的充盈度与剩余度计算一个第一数值,并根据目前帧320的帧规划大小与一个比特率控制容差计算一个第二数值。当帧预测比特数b1大于第一数值或大于第二数值时,量化参数调整单元212会增加量化参数。
[0098] 上述增加量化参数的步骤是将量化参数从一个调整前量化参数改变为一个调整后量化参数。更新与预测单元204根据调整前量化参数与调整后量化参数的比值、预测比特数row_size_sum与已编码比特数i_row_bits_sum来调整目前帧320的帧预测比特数b1。例如,更新与预测单元204会使用方程式(11)来微调b1。
[0099] b1=i_row_bits_sum+row_size_sum×(QPprev/QPadjust)…(11)
[0100] 其中,QPprev为调整前量化参数。Qpadjust为调整后量化参数。在量化参数调整单元212增加量化参数后,由于此时QPprev与QPadjust的比值小于1,因此经过方程式(11)以后,帧预测比特数b1会较原本的值小。从而达到了将帧预测比特数向下修正的目的。
[0101] 接下来,量化参数调整单元212会再次判断修正后的帧预测比特数b1是否大于b1_max,如果是,则重复地根据上述方法增加量化参数的步骤并更新帧预测比特数b1。如此循环,直到帧预测比特数b1的值小于上限值b1_max,进行下面的步骤。
[0102] 量化参数调整单元212会根据目前帧320的帧规划大小计算一个第三数值,并根据缓冲存储器210的充盈度、帧比特率与额定比特率计算一个第四数值。当判断帧预测比特数b1小于第三数值或小于第四数值时,量化参数调整单元212会减少量化参数。例如,量化参数调整单元212会使用方程式(12)来计算帧预测比特数b1的下限值b1_min。
[0103] b1_min=max(frame_size_planned×m,
[0104] (buffer_fill-(bitrate/fps)+buffer_rate)×h)…(12)
[0105] 其中,m与h为实数,例如,m为0.8,而h为1.1。bitrate为额定比特率(每秒的比特数),而fps为未编码视频102每秒的帧数。因此,将bitrate除以fps会等于一个帧比特率。buffer_rate为编码比特从视频缓冲验证(Video Buffering Verifier;VBV)缓存中移走的速率。max()为最大值运算。
[0106] 对于进行向下修正后的帧预测比特数b1,当判断帧预测比特数b1小于下限值b1_min时,量化参数调整单元212会减少量化参数一个预设值。并且,更新与预测单元204会使用方程式(11)来微调b1。在量化参数调整单元212减少量化参数后,由于此时QPprev与QPadjust的比值大于1,因此经过方程式(11)以后,帧预测比特数b1会较此调整之前的值大。
[0107] 接着,量化参数调整单元212会再次判断修正后的帧预测比特数b1是否小于b1_min,如果小于则重复上述减少量化参数的步骤并更新帧预测比特数b1。如此循环,直到b1的值大于b1_min,完成量化参数的调整。
[0108] 之后,量化参数调整单元212会将量化参数110传送给编码器120。量化参数110将用于宏块行322的编码。并且,更新与预测单元204会记录用于编码宏块行322的量化参数以及编码器120传回的残差值比特数,以用在编码下一帧之前更新实数a与实数b。
[0109] 当编码器120编码完宏块行322后,将重复上述步骤编码下一个宏块行。如此类推,对目前帧320的宏块行的量化参数进行调整,并且编码目前帧320。
[0110] 在另一实施例中,方程式(2)与方程式(3)是交由软体来执行,而此软体是执行在一个处理器(或电脑系统)上。因此,更新与预测单元204只需要将转换误差与量化参数传送给软体,藉此增加执行的速度。
[0111] 图4是根据一实施例说明缓冲存储器的充盈度的范例示意图。
[0112] 请参照图4,图中的横轴为时间,纵轴为缓冲存储器210的充盈度。一般来说,一段视频数据的多个帧会被分为I帧以及P帧。编码I帧时并没有计算时间上的相关性,只依照帧本身空间上的冗余(redundancy)来压缩其中的像素值。而编码P帧时则会参照时间上的相关帧,例如使用其他的帧来预测目前的P帧。一般来说,P帧的压缩率会比较高。例如,曲线402表示在编码一个I帧时缓冲存储器210的充盈度会大幅度地提升。而曲线404则表示在编码一个P帧时缓冲存储器210的充盈度则相对地提升较少。在本实施例中,由于比特率控制系统140会考虑缓冲存储器210的充盈度来改变量化参数,因此在编码各个帧时并不会发生缓冲存储器210的存储器空间不足的情形。
[0113] 图5是根据一实施例说明比特率控制方法的流程图。
[0114] 请参照图5,在步骤S502中,复杂度计算单元202会对第一先前帧的残差值执行空间至频率转换,以取得第一先前帧的转换误差,其中第一先前帧的编码顺序是在目前帧的编码顺序之前。
[0115] 在步骤S504中,更新与预测单元204根据转换误差,取得目前帧中一个基本单元的预测比特数。在步骤S506中,量化参数调整单元212会根据预测比特数调整量化参数。
[0116] 然而,图5中各步骤已配合图2与图3详细说明如上,在此便不再赘述。
[0117] 综上所述,本发明实施例所提出的比特率控制方法与比特率控制系统,可以利用转换误差来调整量化参数,藉此简化比特率控制的流程,并且增加执行的速度。此外,透过软体与硬体的分工,可以简化比特率控制系统的实现。
[0118] 虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何所属技术领域中具有通常知识者,在不脱离本发明之精神和范围内,当可作些许之更动与润饰,故本发明之保护范围当视后附之申请专利范围所界定者为准。