1. 一种控制视频编码器的编码率的方法,该方法包括步骤:
(a)采用先前图像组(GOP)的每种图像类型I、P和B的编码每图像比特的平均数量和每图像比特的平均目标数量、和缓冲平衡值,来计算当前图像类型的每图像比特的目标数量;
(b)采用与当前图像类型相同的先前图像的平均量化器标度值、并采用比特目标数量来计算对应于当前图像类型的第一宏块行的量化器标度值;
(c)计算关于当前图像类型的每个宏块行在先前行中每单元行编码比特的数量和每单元行比特的目标数量,采用每单元行编码比特数量和每图像比特目标数量的函数来计算对应于当前行的量化器标度值,以及计算当前图像类型的编码每图像比特的总数量;
(d)存储步骤(c)中计算的量化器标度值,并输出先前图像类型和先前宏块行的量化器标度值;
(e)采用当前图像类型的每图像比特的平均目标数量和编码每图像比特的总数量,来计算缓冲平衡值。
2. 如权利要求1所述的方法,其中每图像比特的目标数量用下面的公式计算:
Tavg i , p , b = B i , p , b · ( N i + N p + N b ) B i · N i + B p · N p + B b · N b · bit _ rate frame _ rate ]]>
T = Tavg i , p , b - B i , p , b · ( N i + N p + N b ) B i · N i + B p · N p + B b · N b · d N dis ]]>
此处T为每图像比特的目标数量;Tavgi,p,b为每种图像类型的每图像比特的平均目标数量;Bi,p,b为每种图像类型的编码每图像比特的平均数量;Ni、Np和Nb分别是图像组中I、P和B图像的数量;bit_rate是预定传输率;frame_rate是帧率;d是缓冲平衡值;Ndis为分散的图像的数量。
3. 如权利要求2所述的方法,其中缓冲平衡值通过下面的公式计算:
d+=Si,p,b-Tavgi,p,b
此处d+为缓冲平衡值d的累加变化;Si,p,b为每种图像类型的一幅图像的编码比特总数量。
4. 如权利要求2所述的方法,其中每种图像类型的编码每图像比特的平均数量Bi,p,b通过采用下面的条件表达式更正:
If(Bp<1.2·Bb) Bp=1.2·Bb;
If(Bi<1.2·Bp) Bi=1.2·Bp;
If(Bi>3.5·Bp) Bi=3.5·Bp;
If(Bb<0.6·Bp) Bb=0.6·Bp。
5. 如据权利要求2所述的方法,其中对应于当前图像类型的第一宏块行的量化器标度值采用下面的公式计算:
Q init = Q i , p , b + γ δ ]]>
γ = Tavg i , p , b - T Tav g i , p , b ]]>
Q i , p , b = 1 N row · Σ j = 1 N row mquant j ]]>
此处Qi,p,b是平均量化器标度值;mquantj是对应于第j个宏块行的量化器标度值;Nrow为在一幅图像中的总行数;Tavgi,p,b为每种图像类型的每图像比特的平均目标数量;T为比特的目标数量;Qinit为对应于第一宏块行的量化器标度值;δ为常数。
6. 如权利要求5所述的方法,其中对应于当前图像类型的每个宏块行的量化器标度值采用下面的与函数有关的公式计算:
if(f(j,Sj,Sj-1,Trow)>β_upj),then
mquantj+1=mquant_up(mquantj,q_scale_type);else if(g(j,Sj,Sj-1,Trow)>β_dnj),
thenmquantj+1=mquant_dn(mquantj,q_scale_type);elsemquantj+1=mquantj
此处Sj为图像中从第一宏块行到第j个宏块行的编码比特的数量;Trow为每单元行比特的目标数量;mquant_up(mquantj,q_scale_type)为多个q_scale_type的任意一个中对应于这样的码的量化器标度值,该码大于对应于mquantj的先前的第k个码;mquant_dn(mquantj,q_scale_type)为多个q_scale_type的任意一个中对应于这样的码的量化器标度值,该码小于对应于mquantj的先前的第k个码;β_upj和β_anj分别是第一和第二临界常数。
7. 如权利要求6所述的方法,其中函数f和g包括代表先前行中的编码比特的数量的表达式。
8. 如权利要求6所述的方法,其中mquant_up(mquantj,q_scale_type)和mquant_dn(mquantj,q_scale_type)分别是多个q_scale_type的任意一个中对应于这样的第(k+1)个码的量化器标度值,该码比对应于mquantj的先前的第k个码大1,和多个q_scale_type的任意一个中对应于这样的第(k-1)个码的量化器标度值,该码比对应于mquantj的先前的第k个码小1。
9. 一种传输视频数据的方法,该方法包括步骤:
(a)接收对应于当前图像类型的当前宏块行的量化器标度值,并按照量化器标度值对视频数据进行编码;
(b)通过采用关于经编码的视频数据在先前宏块行的每单元行的编码比特的数量和每单元行的比特的目标数量,来计算对应于当前宏块行的量化器标度值;
(c)按照传输率输出经编码的视频数据。
10. 如权利要求9所述的方法,其中步骤(b)包括子步骤:
(b-1)采用关于编码的视频数据的先前图像组的每种图像类型I、P和B的编码每图像比特的平均数量和每图像比特的平均目标数量、和缓冲平衡值来计算当前图像类型的每图像比特的目标数量;
(b-2)通过采用当前图像类型的先前图像中最后图像的平均量化器标度值、和每图像比特目标数量来计算对应于当前图像类型的第一宏块行的量化器标度值;
(b-3)计算关于当前图像类型的每个宏块行在先前行中每单元行编码比特的数量和每单元行比特的目标数量,采用包括每单元行比特的目标数量和每单元行的编码比特的数量的函数来计算对应于当前行的量化器标度值,以及计算当前图像类型的编码每图像比特的总数量;
(b-4)存储在子步骤(b-3)输出的量化器标度值,并输出先前图像类型和先前宏块行的量化器标度值;以及
(b-5)采用当前图像类型的每图像比特的平均目标数量和编码比特的总数量来计算缓冲平衡值。
11. 一种用于视频编码器的编码率控制器,包括:
比特分配单元,采用先前图像组(GOP)的每种图像类型I、P和B的每图像比特的平均目标数量和编码每图像比特的平均数量、以及缓冲平衡值来计算当前图像类型的每图像比特的目标数量;
速率控制单元,通过采用当前图像类型的先前图像中最后图像的平均量化器标度值、和每单元行比特的目标数量来计算对应于当前图像类型的第一宏块行的量化器标度值;
自适应量化单元,计算关于当前图像类型的每个宏块行在先前行中每单元行编码比特的数量和每单元行比特的目标数量,通过采用包括每单元行比特的目标数量和每单元行的编码比特的数量的函数来计算对应于当前行的量化器标度值,以及计算当前图像类型的编码比特的总数量;
存储器,存储由自适应量化单元计算的量化器标度值,输出先前图像类型和先前宏块行的量化器标度值;以及
缓冲率计算单元,通过采用当前图像类型的每图像比特的平均目标数量和编码每图像比特的总数量来计算缓冲平衡值。
12. 如权利要求11所述的编码率控制器,其中采用以下公式计算每图像比特的目标数量:
Tavg i , p , b = B i , p , b · ( N i + N p + N b ) B i · N i + B p · N p + B b · N b · bit _ rate frame _ rate ]]>
T = Tavg i , p , b - B i , p , b · ( N i + N p + N b ) B i · N i + B p · N p + B b · N b · d N dis ]]>
此处T为每图像比特的目标数量;Tavgi,p,b为每种图像类型的每图像比特的平均目标数量;Bi,p,b为每种图像类型的编码每图像比特的平均数量;Ni、Np和Nb分别是图像组中I、P和B图像的数量;bit_rate是预定传输率;frame_rate是帧率;d是缓冲平衡值;Ndis为分散的图像的数量。
13. 如权利要求12所述的编码率控制器,其中采用以下公式计算缓冲平衡值:
d+=Si,p,b-Tavgi,p,b
此处d+为缓冲平衡值d的累加变化;Si,p,b为每种图像类型的一幅图像的编码比特总数量。
14. 如权利要求12所述的编码率控制器,其中每种图像类型的编码每图像比特的平均数量Bi,p,b采用下面的条件表达式过滤:
If(Bp<1.2·Bb) Bp=1.2·Bb;
If(Bi<1.2·Bp) Bi=1.2·Bp;
If(Bi>3.5·Bp) Bi=3.5·Bp;
If(Bb<0.6·Bp) Bb=0.6·Bp。
15. 如据权利要求12所述的编码率控制器,其中对应于当前图像类型的第一宏块行的量化器标度值采用下面的公式计算:
Q init = Q i , p , b + γ δ ]]>
γ = Tavg i , p , b - T Tav g i , p , b ]]>
Q i , p , b = 1 N row · Σ j = 1 N row mquant j ]]>
此处Qi,p,b是平均量化器标度值;mquantj是对应于第j个宏块行的量化器标度值;Nrow为在一幅图像中的总行数;Tavgi,p,b为每种图像类型的每图像比特的平均目标数量;T为每图像比特的目标数量;Qinit为对应于第一宏块行的量化器标度值;δ为常数。
16. 根据权利要求15所述的编码率控制器,其中对应于当前图像类型的每个宏块行的量化器标度值mquantj+1采用下面的与函数有关的公式计算:
if(f(j,Sj,Sj-1,Trow)>β_upj),then
mquantj+1=mquant_up(mquantj,q_scale_type);else if(g(j,Sj,Sj-1,Trow)>β_dnj),
thenmquantj+1=mquant_dn(mquantj,q_scale_type);elsemquantj+1=mquantj
此处Sj为图像中从第一宏块行到第j个宏块行的编码比特的数量;Trow为每单元行比特的目标数量;mquant_up(mquantj,q_scale_type)为多个q_scale_type的任意一个中对应于这样的码的量化器标度值,该码大于对应于mquantj的先前的第k个码;mquant_dn(mquantj,q_scale_type)为多个q_scale_type的任意一个中对应于这样的码的量化器标度值,该码小于对应于mquantj的先前的第k个码;β_upj和β_dnj分别是第一和第二临界常数。
17. 根据权利要求16所述的编码率控制器,其中函数f和g包括代表先前行的编码比特的数量的表达式。
18. 根据权利要求16所述的编码率控制器,其中mquant_up(mquantj,q_scale_type)是多个q_scale_type的任意一个中对应于这样的第(k+1)个码的量化器标度值,该码比对应于mquantj的先前的第k个码大1,mquant_dn(mquantj,q_scale_type)是多个q_scale_type的任意一个中对应于这样的第(k-1)个码的量化器标度值,该码比对应于mquantj的先前的第k个码小1。
19. 一种视频数据传输系统,包括:
视频编码器,接收对应于当前图像类型的当前宏块行的量化器标度值,根据量化器标度值对视频输入数据编码,并输出编码的视频数据;
编码率控制器,采用关于编码的视频数据的先前宏块行中每单元行编码比特的数量和每单元行比特的目标数量来计算对应对于当前宏块行的量化器标度值;
编码器缓冲器,根据传输率输出编码的视频数据。
20. 根据权利要求19所述的视频数据传输系统,其中编码率控制器包括:
比特分配单元,采用关于编码的视频数据的先前图像组的每种图像类型I、P和B的每图像比特的平均目标数量和编码每图像比特的平均数量、以及缓冲平衡值来计算当前图像类型的每图像比特的目标数量;
速率控制单元,通过采用与当前图像类型相同的在先图像的平均量化器标度值、和比特的目标数量来计算对应于当前图像类型的第一宏块行的量化器标度值;
自适应量化单元,计算关于当前图像类型的每个宏块行在先前行中每单元行编码比特的数量和每单元行比特的目标数量,通过采用包括每单元行比特的目标数量和每单元行的编码比特的数量的函数来计算对应于当前行的量化器标度值,以及计算当前图像类型的编码比特的总数量;
存储器,存储由自适应量化单元计算的量化器标度值,输出先前图像类型和先前宏块行的量化器标度值;以及
缓冲率计算单元,通过采用当前图像类型的每图像比特的平均目标数量和编码每图像比特的总数量来计算缓冲平衡值。