HEVC代码学习28:setLambda函数
来源:互联网 发布:黄金未来走势预测知乎 编辑:程序博客网 时间:2024/06/05 00:40
在之前的TComRdCost类学习中,我们提到,要计算率失真代价,需要三个量:失真D、拉格朗日因子λ和码率R。下面就来看一下λ的设置函数。
在TComRdCost类中定义了setLambda函数,来对λ值进行设置。
//设置λVoid TComRdCost::setLambda( Double dLambda, const BitDepths &bitDepths ){ m_dLambda = dLambda; //λ m_sqrtLambda = sqrt(m_dLambda); //λ的平方根#if RExt__HIGH_BIT_DEPTH_SUPPORT m_dLambdaMotionSAD[0] = 65536.0 * m_sqrtLambda; m_dLambdaMotionSSE[0] = 65536.0 * m_dLambda;#if FULL_NBIT dLambda = 0.57 * pow(2.0, ((LOSSLESS_AND_MIXED_LOSSLESS_RD_COST_TEST_QP_PRIME - 12) / 3.0));#else dLambda = 0.57 * pow(2.0, ((LOSSLESS_AND_MIXED_LOSSLESS_RD_COST_TEST_QP_PRIME - 12 - 6 * (bitDepths.recon[CHANNEL_TYPE_LUMA] - 8)) / 3.0));#endif m_dLambdaMotionSAD[1] = 65536.0 * sqrt(dLambda); m_dLambdaMotionSSE[1] = 65536.0 * dLambda;#else//m_uiLambdaMotionSAD[2 /* 0=standard, 1=for transquant bypass when mixed-lossless cost evaluation enabled*/] m_uiLambdaMotionSAD[0] = (UInt)floor(65536.0 * m_sqrtLambda); m_uiLambdaMotionSSE[0] = (UInt)floor(65536.0 * m_dLambda );#if FULL_NBIT dLambda = 0.57 * pow(2.0, ((LOSSLESS_AND_MIXED_LOSSLESS_RD_COST_TEST_QP_PRIME - 12) / 3.0));#else dLambda = 0.57 * pow(2.0, ((LOSSLESS_AND_MIXED_LOSSLESS_RD_COST_TEST_QP_PRIME - 12 - 6 * (bitDepths.recon[CHANNEL_TYPE_LUMA] - 8)) / 3.0));#endif m_uiLambdaMotionSAD[1] = (UInt)floor(65536.0 * sqrt(dLambda)); m_uiLambdaMotionSSE[1] = (UInt)floor(65536.0 * dLambda );#endif}
可以看到其中分两种情况:标准情况和变换量化旁路混合无损成本评估启用情况,计算了SAD和SSE两种λ。而计算中使用到的dLambda是直接由上层传入的,实际是通过QP确定的。
阅读全文
0 0
- HEVC代码学习28:setLambda函数
- HEVC代码学习2:TAppEncTop::encode函数
- HEVC代码学习3:TEncTop::encode函数
- HEVC代码学习7:xPatternSearchFracDIF函数
- HEVC代码学习8:xMotionEstimation函数
- HEVC代码学习9:getInterMergeCandidates函数
- HEVC代码学习11:xCompressCU函数
- HEVC代码学习12:xCheckRDCostInter函数
- HEVC代码学习13:predInterSearch函数
- HEVC代码学习14:motionCompensation函数
- HEVC代码学习15:AMVP相关函数
- HEVC代码学习20:xPatternSearchFast函数
- HEVC代码学习21:xTZSearch函数
- HEVC代码学习22:xTZSearchHelp函数
- HEVC代码学习23:xTZ8PointDiamondSearch函数
- HEVC代码学习24:encodeResAndCalcRdInterCU函数
- HEVC代码学习25:xDecompressCU函数
- HEVC代码学习27:calcRdCost函数
- 基于OpenCV实现手写体数字训练与识别
- 如何精确度量 iOS App 的启动时间
- leetcode 316. Remove Duplicate Letters 去除重复字符 + 字典序最小 + 贪心 + 递归
- 学习日志
- Android Studio 中 NDK 开发之JNI开发规范
- HEVC代码学习28:setLambda函数
- java设计模式-单例模式
- HDU 3394 Railway 点双连通分量
- linux学习笔记
- sqli-labs学习记录(三)
- iOS 快捷键~窗体、帮助
- java反射机制优缺点
- 第四周LeetCode
- 反射-动态代理设计模式