螺旋搜索方式

 

I 编码器project中的主要文件说明:搜索算法模块

Lencod.c文件作为main函数所在的文件,体现了整个编码器的处理流程。对于image,picture, slice, macroblock, block(submacroblock,partition)等主要的数据结构,构成了进行编解码的处理对象。对于模式确定,是和rd计算分不开的,还有就是运动向量的确定。在进行运动估计(ME)时,JM12.0采用了5种不同的搜索算法。对不同搜索算法的研究,主要是算法思想,算法采用的数据结构,算法的具体实现编码技巧,算法的执行效率和分析。今天的研究主要是搞清楚了螺旋搜索方式下的搜索中心点的选择方法。该实现可参见代码实现。

II 变量含义:

mv-search.c中,

static int  bx0[5][4] = {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,2,0,0}, {0,2,0,2}};

  static int  by0[5][4] = {{0,0,0,0}, {0,0,0,0}, {0,2,0,0}, {0,0,0,0}, {0,0,2,2}};

 

指示了在一个macroblock进行搜索或预测的起始位置

类似的结构在PartitionMotionSearch中也有出现

 

注意,BlockType可以为1,2,3,4,5,6,7,当BlockType>=4时,PartType=4

 

当PartType为1时,Block8x8只能为0

当PartType为2,3时,Block8x8为0或者1

当PartType为4时,Block8x8为0,1,2,3

 

当PartType为1时,Block8x8=0 查询by0和bx0得到v=h=0

表示这时的LumaPrediction4x4的位置从macroblock的左上角开始. v的单位是block4x4。预测的范围由step_v0和step_h0指定,实际上就是以block4x4为单位的分块大小。

当parttype=2时,依据block8x8的取值(0或者1)

h,v的取值分别是 h=v=0 (左上角)

h=0 v=2 (下面分块的坐上角)

parttype=3的情况类推,h=v=0(左边分块),h=2 v=0(右边分块)

parttype=4时 实际上macroblock作了P8x8的分块

这是 依据block8x8的取值(0,1,2,3)

h,v分别是

0,0

2,0

0,2

2,2

III JMmode的含义

From:lencod.c(1540)

  Intra               Mode used 

 

Mode 0  intra 4x4 

Mode 1  intra 8x8   

(Mode 2+ intra 16x16

Mode    intra IPCM  

   Inter               Mode used   

 

Mode  (copy)    

Mode  (16x16)  

Mode  (16x8)

Mode  (8x16)  

Mode  (8x8)

Mode  intra 4x4

Mode  intra 8x8

Mode  7+ intra 16x16

Mode     intra IPCM

 

   B frame             Mode used

Mode  (copy)

Mode  (16x16)

Mode  (16x8)

Mode  (8x16)

Mode  (8x8)

Mode  intra 4x4

Mode  intra 8x8

Mode  7+ intra 16x16

Mode     intra IPCM

IV

 qp_per_matrix

q_matrix.c(369):  if ((qp_per_matrix = (int*)malloc((MAX_QP + 1 +  bitdepth_qp_scale)*sizeof(int))) == NULL),从这里可以看出,它包括的元素数量,和对应元素的数据类型。并且有:

q_matrix.c(376):    qp_per_matrix[i] = i / 6;

V

q_matrix.c(377):    qp_rem_matrix[i] = i % 6;

VI

Intra4x4Macroblock的模式确定过程

①int Mode_Decision_for_Intra4x4Macroblock (double lambda,  int* cost)

其中,调用② Mode_Decision_for_8x8IntraBlocks (b8, lambda, &cost8x8),②中间调用③Mode_Decision_for_4x4IntraBlocks (b8, b4, lambda, &cost4x4)。函数③完整展现了一个4x4block的Intra模式确定过程。

VII

结构体PixelPos中坐标值含义

int pos_x;

  int pos_y;

在整个frame中的绝对坐标

  int x;

  int y;

在macroblock中的坐标

以上解答来自qq群:RD_ARM.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值