CBP详解

来源:互联网 发布:下载9553软件 编辑:程序博客网 时间:2024/06/04 19:40
CBP详解

cbp一共6bit,高2bit表示cbpc(2:cb、cr中至少一个4x4块的AC系数不全为0;1:cb、cr中至少一个2x2的DC系数不全为0;0:所有色度系数全0)

低4bit分别表示4个8x8亮度块,其中从最低一位开始的4位分别对应00,10,01,11位置的8*8亮度块。如果某位为1,表示该对应8*8块的4个4*4块中至少有一个的系数不全为0。

ICBPTAB[0] = 0  (00 0000)表示既没有亮度系数,也没有色差系数

ICBPTAB[1] = 16 (01 0000)表示没有亮度系数,有色差直流系数(没有交流系数)

ICBPTAB[2] = 32 (10 0000)表示没有亮度系数,有色差交流系数(可能含有直流系数)

ICBPTAB[3] = 15 (00 1111)表示有亮度系数,没有色差系数

ICBPTAB[4] = 31 (01 1111)表示有亮度系数,有色差直流系数(没有交流系数)

ICBPTAB[5] = 47 (10 1111)表示有亮度系数,有色差交流系数(可能含有直流系数)
 
例子:
position       : 0x0 (0x0)
mb_addr        : 0
size (in bits) : 157
mb_type        : 0
pmode          : 0
mb_type        : Inter(P_L0_16x16)
slice_number   : 0
transform_8x8  : 0
field/frame    : frame
cbp bits       : 0 0000 0 00 0 00
               :   0000   00   00
               :   0011
               :   0111
quant_param    : 28
pmode          : Part_16x16
mvL0           :
   0,   0, 0|   0,   0, 0|   0,   0, 0|   0,   0, 0
   0,   0, 0|   0,   0, 0|   0,   0, 0|   0,   0, 0
   0,   0, 0|   0,   0, 0|   0,   0, 0|   0,   0, 0
   0,   0, 0|   0,   0, 0|   0,   0, 0|   0,   0, 0
上面是宏块的信息...但cbp那部分 怎么不是 6个比特... 望进一步指导一下...
 
我说的 CBP 是协议里的 CBP,跟你这里的这个 CBP 不是完全对应的关系。究竟是什么对应关系,我还得研究研究,我没怎么使用 streameye 这个软件。
cbp bits 00000000000
00000000
0011
0111
 
昨天晚上分析了一下,情况是这样的,将上例中的 cbp bits 分成这样 6 列:

第一列只有第一行有数字:该值为 0 代表 Y 分量 16 个 DC 系数全部为 0,为 1 则代表 16 个 DC 系数不全部为 0;
第二列是个 4*4 的矩阵,与 Y 分量 16 个 4*4 块的位置刚好对应:某个位置的值为 0 代表该 4*4 块 AC 系数全部为 0,为 1 则代表 AC 系数不全部为 0;
第三列也只有第一行有数字:该值为 0 代表 U 分量 4 个 DC 系数全部为 0,为 1 则代表 4 个 DC 系数不全部为 0;
第四列是个 2*2 的矩阵,与 U 分量 4 个 4*4 块的位置刚好对应:某个位置的值为 0 代表该 4*4 块 AC 系数全部为 0,为 1 则代表 AC 系数不全部为 0;
第五列也只有第一行有数字:该值为 0 代表 V 分量 4 个 DC 系数全部为 0,为 1 则代表 4 个 DC 系数不全部为 0;
第六列是个 2*2 的矩阵,与 V 分量 4 个 4*4 块的位置刚好对应:某个位置的值为 0 代表该 4*4 块 AC 系数全部为 0,为 1 则代表 AC 系数不全部为 0;

【说明】:如果宏块是非 16*16 Intra 宏块,此时,DC 系数并不单独处理,因此第一列的数值虽然仍然为 0,但并不代表 DC 系数全部为 0。而这个时候,第二列的各个数值是否为 0 由 DC、AC 系数共同决定。
原创粉丝点击