x264源码分析x264_macroblock_analyse(一)

本文详细解析了x264视频编码中intra预测的实现过程,包括16x16、8x8及4x4块的不同预测模型,并通过具体代码示例介绍了宏块分析和预测的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    首先这个函数非常复杂,比较长,因此我们分几次讲解。

先讲一下我理解的intra预测这部分。intra分为三种形状,16x16, 8x8, 4x4。 16x16的块也欧4种预测模型,前面文章讲解过。8x8和4x4都是9种预测模型,而且他们是方向伤的预测,没有想16x16有Plane预测。

void x264_macroblock_analyse(x264_t *h)

{

    x264_mb_analysis_t analysis;//分析上下文

   h->mb.i_qp = x264_ratecontrol_mb_qp(h); //当前宏块qp值

   if  h->param.rc.i_aq_mode && h->param.analyse.i_subpel_refine < 10) {

       h->mb.i_qp = abs(h->mb.i_qp - h->mb.i_last_qp) == 1?h->mb.i_last_qp:h->mb.i_qp;

   }  //如果qp差值1以内就不做调整

   if (h->param.analyse.b_mb_info) {

       h->fdec->effective_qp[h->mb.i_mb_xy] = h->mb.i_qp; // store the real analysis QP

   }

    if (h->sh._type == SLICE_TYPE_I) {

if( analysis.i_mbrd ) //宏块rdo等级,和subme有关,1,2, 3

mb_init_fenc_cache( h, analysis.i_mbrd >= 2 ); //初始化一些值

mb_analyse_intra( h, &analysis, COST_MAX ); 

    }

}

//接下来主要看看MB_ANALYSE_INTRA函数

上面16X16的块预测就完成了。

下面还有8x8以及4x4的预测,整体代码差不太多。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值