h264参考代码中的cbp是什么意思
2013-04-25 13:27
453 查看
以下是我的理解:
cbp用于表示当前宏块是否存在非零值
在x264中,
对于luma
由i_cbp_luma的第i位(i= 0、1、2、3)位表示一个MB中第i行4x4子块是否有非零值
若存在非零值,则将相应位置1
对于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进行其它操作~
这只对于X264,JM就不是很清楚了~
=====================================================================
利用CBP判断要不要SKIP,里面还关系到向量预测
=====================================================================
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)表示有亮度系数,有色差交流系数(可能含有直流系数)
=======================================================================
关于CBP(回忆一下,“ CAVLC是用于亮度和色度残差数据的编码。”,所以,变换量化后求的cpb值对熵编码非常有用。)
·DC 直流系数 AC交流系数
dc指变换后处于(0,0)位置的系数。其它为ac。
(电工学中,AC——Alternating
Current交流; DC——Direct Current直流)
当使用帧内16*16时,类型名称由如下的结构组成:I_16*16_x_y_z。
其中,x对应于表中“帧内预测模式”字段的值,y对应于“色度CBP”字段的值,对应于“亮度CBP”字段的值。
Coded_block_pattern,即CBP,指亮度和色度分量的各小块的残差的编码方案。
所谓的残差方案包括:
(1) 所有残差(包括DC、AC)都编码。
(2) 只对DC系数编码。
(3) 所有残差(包括DC、AC)都不编码。
对于非帧内16*16的宏块类型:
CodedBlockPatternLuma = coded_block_pattern % 16
CodedBlockPatternChroma = coded_block_pattern / 16
对于帧内16*16的宏块类型,CodedBlockPatternLuma和CodedBlockPatternChroma 的值不是由本句法元素给出,而是通过mb_type得到的。
(p185有取值的详细解释)
转载于:http://imeradio.blog.163.com/blog/static/153419404201011224714936/
cbp用于表示当前宏块是否存在非零值
在x264中,
对于luma
由i_cbp_luma的第i位(i= 0、1、2、3)位表示一个MB中第i行4x4子块是否有非零值
若存在非零值,则将相应位置1
对于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进行其它操作~
这只对于X264,JM就不是很清楚了~
=====================================================================
利用CBP判断要不要SKIP,里面还关系到向量预测
=====================================================================
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)表示有亮度系数,有色差交流系数(可能含有直流系数)
=======================================================================
关于CBP(回忆一下,“ CAVLC是用于亮度和色度残差数据的编码。”,所以,变换量化后求的cpb值对熵编码非常有用。)
·DC 直流系数 AC交流系数
dc指变换后处于(0,0)位置的系数。其它为ac。
(电工学中,AC——Alternating
Current交流; DC——Direct Current直流)
当使用帧内16*16时,类型名称由如下的结构组成:I_16*16_x_y_z。
其中,x对应于表中“帧内预测模式”字段的值,y对应于“色度CBP”字段的值,对应于“亮度CBP”字段的值。
Coded_block_pattern,即CBP,指亮度和色度分量的各小块的残差的编码方案。
所谓的残差方案包括:
(1) 所有残差(包括DC、AC)都编码。
(2) 只对DC系数编码。
(3) 所有残差(包括DC、AC)都不编码。
对于非帧内16*16的宏块类型:
CodedBlockPatternLuma = coded_block_pattern % 16
CodedBlockPatternChroma = coded_block_pattern / 16
对于帧内16*16的宏块类型,CodedBlockPatternLuma和CodedBlockPatternChroma 的值不是由本句法元素给出,而是通过mb_type得到的。
(p185有取值的详细解释)
转载于:http://imeradio.blog.163.com/blog/static/153419404201011224714936/
相关文章推荐
- h264参考代码中的cbp是什么意思
- php程序中代码前面加上@符号是什么意思
- (转载)怎么看到有的代码定义变量用var $a是什么意思?
- 这段代码什么意思啊?
- SQL存储过程前面后面的几句代码是什么意思?
- media="screen" 这句代码是什么意思?
- .net; .com; .gov; .org; .edu这些代码分别是什么意思..
- 代码参数里的 payload 是什么意思???
- HTTP代码 404,500,200代表什么意思
- 代码第一个call调用是什么意思
- “white-space: nowrap;”此代码是什么意思?
- Xcode中代码控制标记是什么意思
- 指令伪代码value=Memory[address,4]的4什么意思
- 求大神,帮忙看一下这段代码什么意思,语法是怎么运用的,在线求解释
- 代码结构中Dao,Service,Controller,Util,Model是什么意思
- android 开发零起步学习笔记(八):android studio 中代码上画横线代表什么意思
- HTTP 状态代码表示什么意思?
- 这句代码什么意思?img, div, input { behavior: url("iepngfix.htc") }
- 同志们给我说说什么意思啊 简单的 虽然代码多点儿呵呵.....
- 代码结构中Dao,Service,Controller,Util,Model是什么意思,为什么划分?