X264帧内预测编码模式.doc

X264帧内预测编码模式.doc

ID:57896815

大小:46.00 KB

页数:6页

时间:2020-09-02

X264帧内预测编码模式.doc_第1页
X264帧内预测编码模式.doc_第2页
X264帧内预测编码模式.doc_第3页
X264帧内预测编码模式.doc_第4页
X264帧内预测编码模式.doc_第5页
资源描述:

《X264帧内预测编码模式.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、X264帧内预测编码模式帧内宏块预测编码模式:分别计算16X16和16个4X4块的代价,取两者中最小代价为该宏块的编码模式。1、进行16X16模式的预测(1)根据周围宏块的情况判断其可能的预测模式。(主要是上块TOP和左块LEFT)(2)计算各种可能模式的编码代价(3)取最小代价2、进行4X4块模式的预测(1)根据周围宏块情况判断其可能的预测模式。(可以参考其他相邻宏块)(2)计算每个4X4块的每种预测模式的编码代价,并取代价最小(3)将16个4X4块的最小代价相加,得到总代价和。3、将16X16模式的代价

2、与4X4模式的代价和进行比较,取两者最小为最后的宏块预测编码模式。X264中的代码分析:staticvoidx264_mb_analyse_intra(x264_t*h,x264_mb_analysis_t*a,inti_satd_inter)//函数功能:帧内预测编码模式选择{constunsignedintflags=h->sh.i_type==SLICE_TYPE_I?h->param.analyse.intra:h->param.analyse.inter;//判断是进行I片内的宏块帧内预测编码还是

3、P或B片(帧间片)内的帧内模式预测编码uint8_t*p_src=h->mb.pic.p_fenc[0];uint8_t*p_dst=h->mb.pic.p_fdec[0];inti,idx;inti_max;intpredict_mode[9];intb_merged_satd=h->pixf.intra_satd_x3_16x16&&h->pixf.mbcmp[0]==h->pixf.satd[0];/*----------------Tryallmodeandcalculatetheirscore--

4、-------------*//*16x16predictionselection*/predict_16x16_mode_available(h->mb.i_neighbour,predict_mode,&i_max);//获取16X16的可用预测编码模式if(b_merged_satd&&i_max==4)//如果b_merged_satd不为0且可用预测编码模式有4种,I帧时直接跳过{h->pixf.intra_satd_x3_16x16(p_src,p_dst,a->i_satd_i16x16_di

5、r);h->predict_16x16[I_PRED_16x16_P](p_dst);a->i_satd_i16x16_dir[I_PRED_16x16_P]=h->pixf.mbcmp[PIXEL_16x16](p_dst,FDEC_STRIDE,p_src,FENC_STRIDE);for(i=0;i<4;i++){intcost=a->i_satd_i16x16_dir[i]+=a->i_lambda*bs_size_ue(i);COPY2_IF_LT(a->i_satd_i16x16,cost,a-

6、>i_predict16x16,i);}}else{for(i=0;ipredict_16x16[i_mode](p_dst);i_satd=h->pixf.mbcmp[PIXEL_16x16](p_dst,FDEC_STRIDE,p_src,FENC_STRIDE)+a->i_lambda*bs_size_ue(x264_mb_pred_mode16x16_fix[i_mode]);//计算编码代价COP

7、Y2_IF_LT(a->i_satd_i16x16,i_satd,a->i_predict16x16,i_mode);//比较a->i_satd_i16x16与i_satd的大小,a->i_satd_i16x16的初值为COST_MAX/*比较大小代码如下:#defineCOPY2_IF_LT(x,y,a,b)if((y)<(x)){(x)=(y);(a)=(b);}如果i_satd比a->i_satd_i16x16小,则把i_satd值赋给a->i_satd_i16x16,作为当前最优代价,同时

8、把该次预测模式作为当前最优模式;如果a->i_satd_i16x16比i_satd小,则不赋值,只作比较.*/}}if(h->sh.i_type==SLICE_TYPE_B)//如果是进行B片内的宏块帧内预测编码,I帧时直接跳过/*cavlcmbtypeprefix*/a->i_satd_i16x16+=a->i_lambda*i_mb_b_cost_table[I_16x16];//在代价上增加一个prefix

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。