以下是我关于x264代码中cbp的一些理解,不知道对不对,欢迎各位批评指正!
cbp用于表示是否存在非零值
在x264中,
对于luma
由i_cbp_luma的第i位(i= 0、1、2、3)位表示一个MB中第i行4x4子块是否有非零值
若存在非零值,则设置i_cbp_luma标志
对于chroma
由i_cbp_chroma表示
0x00表示:全为零
0x01表示:只有DC参数不为零
0x02表示:有不为零的参数
在获得i_cbp_luma和i_cbp_chroma后,会把他们保存在cbp数组中,用
h->mb.cbp[h->mb.i_mb_xy] = (i_cbp_dc << 8) | (h->mb.i_cbp_chroma << 4) | h->mb.i_cbp_luma;
实现,也就是说
cbp的高8位放的是i_cbp_dc,低8位中高4位放的i_cbp_chroma,低4位放的i_cbp_luma
之后会根据cbp进行其它操作~
===================================================================================
利用CBP判断要不要SKIP.,里面还关系到向量预测