关于getLuma4x4Neighbour()函数的tip

M提供的void getLuma4x4Neighbour (int curr_mb_nr, int block_x, int block_y, int rel_x, int rel_y, PixelPos *pix)函数是一个非常简单的函数,用于找到指定的邻接块坐标。正因为它简单我们往往忽视了对它的分析,引起不必要的错误。
    getLuma4x4Neighbour的参数,curr_mb_nr为当前宏块序号,block_x,block_y为参考块在当前宏块中的块坐标,rel_x, int rel_y为目标块相对于参考块的像素坐标,pix为输出坐标以及相关宏块信息。这些都不必螯述。分析代码可以看到改函数又调用了getNeighbour()函数,对参数作了一些处理,getNeighbour()又根据帧场自适应标志决定调用getAffNeighbour()或getNonAffNeighbour()。
    在最终的函数getNonAffNeighbour()中我们看到 
 if ((xN<0)&&(yN<0))
 。。。
 else if ((xN<0)&&((yN>=0)&&(yN
 。。。
 else if (((xN>=0)&&(xN <0))
 。。。
 else if (((xN>=0)&&(xN =0)&&(yN
 。。。
 else if ((xN>=maxWH)&&(yN<0))
 。。。
 else
 pix->available = 0;
    前面的5个if分别对D块、A块、B块、块内、C块进行判断,如果不在这5个宏块内,就返回 pix->available = 0,所以类似这样的函数getLuma4x4Neighbour (curr_mb_nr,0,0,18,0,pix)是不可能得到当前块右边的块的,也就是说getNeighbour函数只能找到在当前块之前编码的块信息,因此如果要获取右边和下面的块,必须自己动手搞定。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值