宏块的分块模式及函数PartitionMotionSearch

1.宏块的分块模式,在配置文件encoer_baseline.cfg中有

##########################################################################################
# Encoder Control
##########################################################################################

.....

InterSearch16x16      =  1  # Inter block search 16x16 (0=disable, 1=enable)
InterSearch16x8       =  1  # Inter block search 16x8  (0=disable, 1=enable)
InterSearch8x16       =  1  # Inter block search  8x16 (0=disable, 1=enable)
InterSearch8x8        =  1  # Inter block search  8x8  (0=disable, 1=enable)
InterSearch8x4        =  1  # Inter block search  8x4  (0=disable, 1=enable)
InterSearch4x8        =  1  # Inter block search  4x8  (0=disable, 1=enable)
InterSearch4x4        =  1  # Inter block search  4x4  (0=disable, 1=enable)


2.宏块的分块模式mode即bolcktype含义如下:1->(16*16),2->(16*8),3->(8*16),4->(8*8),5->(8*4),6->(4*8),7->(4*4),常量与分块模式(类型)相对应。

16x16, 16x8, 8x16(8×8)被称为宏块级,而8×88×44×84×4被称为亚宏块级。


3.encode_one_macroblock(),在rdopt.c中,也就是编码一个宏块,其中做运动估计时需要调用函数PartitionMotionSearch (int    blocktype, //宏块分块的类型  
                                   int    block8x8,  //分块的编号
                                   double lambda)    //拉格朗日系数

  (1)bx0,by0是各个模式下分块的起始坐标,坐标的单位是4*4小块,原型为bx0[parttype][block8*8],by0bx0[parttype][block8*8],4个分块,所以block8*8=4,4种类型分割:mode=1,2,3,4 (parttype != 0),因为到mode>4的时候,parttype为4,即用parttype4代表所有的亚宏块分割。

//各种宏块模式下的子块的起始偏移量,相对4*4块来讲,这有利于运动矢量的存放

//[5]表示宏块的类型,[4]表示各种类型下的子块序号,最多子块情况为P8X8模式下有4个


int   parttype  = (blocktype<4?blocktype:4);//亚宏块的parttype都设为4


   (2)step_h0,step_v0,step_h,step_v的含义。如果blocktype为1-4,step_h0与step_h相等,代表当前搜索块的高,同理另一组代表搜索块的宽。如果blocktype大于4,则step_h0为8*8块的高,step_h为blocktype类型的高,同理得宽。这是因为,8*8块是计算代价最小单位,8*8以下的分块代价需要累加起来。

  (3)该函数其实主要是做运动搜索的流程控制,完成对各个分块以及参考帧的遍历工作,真正计算代价和进行运动搜索的是靠调用BlockMotionSearch函数来完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值