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)表示有亮度系数,有色差交流系数(可能含有直流系数)
低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个比特... 望进一步指导一下...
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 | : | 0 | 0000 | 0 | 00 | 0 | 00 |
: | 0000 | 00 | 00 | ||||
: | 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 系数共同决定。
第一列只有第一行有数字:该值为 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 系数共同决定。