在前一篇文章的基础上继续往下讲。
基本单元层码率控制
如果不是选择一帧作为一个基本单元,还得添加上额外的基本单元层码率控制。
同帧层码率控制一样,I帧以单一的QP值编码,且这个QP值和帧层码率控制中的QP值求法一样。B帧也是以单一的QP值编码,以几乎和帧层中一样的方法求出,只是QP1和QP2由相应帧中所有基本单元的QP的平均值替换。
main
encode_sequence
encode_one_frame
perform_encode_frame
rc_init_frame
rc_init_pict
rc_updateQP
I帧
if (p_Vid->type == I_SLICE)
{
p_quad->m_Qc = p_quad->MyInitialQp;
return p_quad->m_Qc;
}
B帧
else if( p_Vid->type == B_SLICE )
{
/*top field of B frame*/
if((topfield)||(p_gen->FieldControl==0))
{
if(p_Inp->NumberBFrames==1)
{