Openh264模式决策流程

本文详细介绍了Openh264编码器中I slice和P slice的模式决策过程。对于I slice,分为I16x16和I4x4模式,通过计算SATD代价选择最佳模式。P slice的决策不仅包括帧内模式,还有帧间模式如P16x16、P16x8、P8x16和P8x8,以及P SKIP模式。决策过程涉及预测模式、预测值、SATD代价和编码复杂性的比较。

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

Openh264模式决策过程
I slice(帧内决策)

概述
对I slice 的预测变换模块和编码模块都在函数WelsISliceMdEnc中进行的。由于openh264暂时还不支持High profile及其以上的档次,所以I slice(帧内 条/片)的宏块,亮度分量只支持16x16 和 4x4的划分模式,色度分量只支持8x8的划分。
对宏块的亮度分量选择最佳的划分模式及预测模式流程如下:

  1. 计算帧内16x16划分模式(以下称其为I16x16模式)的SATD代价。
  2. 计算帧内4x4划分模式(以下称其为I4x4模式)的SATD代价。
  3. 根据两种划分模式各自的SATD代价得到最优的划分模式,并保存预测模式,预测数据等。

I16x16模式

在函数WelsMdIntraMb中有个WelsMdI16x16函数,I16x16模式的决策过程就是在这个函数里面完成的。下面简要的介绍I16x16决策过程:

1.根据当前宏块的邻近宏块存在状况,得到当前宏块候选的预测模式列表。

int32_t iOffset = pMbCache->uiNeighborIntra & 0x07;
iAvailCount = g_kiIntra16AvaliMode[iOffset][4];
kpAvailMode = g_kiIntra16AvaliMode[iOffset];

2.遍历候选的预测模式列表,求出预测模式的预测值,SATD代价,并且每次根据SATD代价更新最优的预测模式及其他预测数据。

pFunc->pfGetLumaI16x16Pred[iCurMode] (pDst, pDec, iLineSizeDec);
iCurCost = pFunc->sSampleDealingFuncs.pfMdCost[BLOCK_16x16] (pDst, 16, pEnc, iLineSizeEnc);
iCurCost +=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值