Coded Block Pattern简称CBP,在H264协议7.3.2.1中有介绍,CBP表征了MB中的亮度和色度块的残差做DCT后的系数是否为0的情况,CBP可以拆分为CodedBlockLuma和CodedBlockChroma,分别对应亮度和色度块的残差系数是否为0,它们的具体含义后面会做介绍,首先我们要获取CodedBlockLuma和CodedBlockChroma,协议中规定根据MB type类型的不同获取CodedBlockLuma和CodedBlockChroma的语法也相同。
当MBType为P_SKIP,B_SKIP或I_PCM时,不需要有CBP,CBP没有存在的意义。
CodedBlockLuma解析
MB Type为Intra16x16
首先获取CodedBlockLuma和CodedBlockChroma,如果MB Type为Intra16x16,码流中没有CBP字段,根据Table7-11可以由码流中的MB Type对应到具体的CodedBlockLuma和CodedBlockChroma。
码流中mb_type取值为1-24都对应Intra16x16,但是CodedBlockLuma和CodedBlockChroma对应值不同,例如,mb_type为9,对应的CodedBlockLuma和CodedBlockChroma分别为2和0。
如果是Intra16x16,CodecBlockLuma只有两种情况,0或者15,从