[x265] [PATCH] rc: fix rate factor calculation after updating m_avgQpRc in rateControlEnd
Divya Manivannan
divya at multicorewareinc.com
Thu Jul 23 14:16:55 CEST 2015
# HG changeset patch
# User Divya Manivannan <divya at multicorewareinc.com>
# Date 1437653747 -19800
# Thu Jul 23 17:45:47 2015 +0530
# Node ID d291022134da6995706e07c38539330fc3288a18
# Parent 42bc8575020b73d129d0bcef70c7cbe80a8b51df
rc: fix rate factor calculation after updating m_avgQpRc in rateControlEnd
diff -r 42bc8575020b -r d291022134da source/encoder/ratecontrol.cpp
--- a/source/encoder/ratecontrol.cpp Wed Jul 22 12:56:34 2015 -0500
+++ b/source/encoder/ratecontrol.cpp Thu Jul 23 17:45:47 2015 +0530
@@ -2151,25 +2151,6 @@
FrameData& curEncData = *curFrame->m_encData;
int64_t actualBits = bits;
Slice *slice = curEncData.m_slice;
- if (m_isAbr)
- {
- if (m_param->rc.rateControlMode == X265_RC_ABR && !m_param->rc.bStatRead)
- checkAndResetABR(rce, true);
-
- if (m_param->rc.rateControlMode == X265_RC_CRF)
- {
- if (int(curEncData.m_avgQpRc + 0.5) == slice->m_sliceQp)
- curEncData.m_rateFactor = m_rateFactorConstant;
- else
- {
- /* If vbv changed the frame QP recalculate the rate-factor */
- double baseCplx = m_ncu * (m_param->bframes ? 120 : 80);
- double mbtree_offset = m_param->rc.cuTree ? (1.0 - m_param->rc.qCompress) * 13.5 : 0;
- curEncData.m_rateFactor = pow(baseCplx, 1 - m_qCompress) /
- x265_qp2qScale(int(curEncData.m_avgQpRc + 0.5) + mbtree_offset);
- }
- }
- }
if (m_param->rc.aqMode || m_isVbv)
{
@@ -2195,6 +2176,26 @@
curEncData.m_avgQpAq = curEncData.m_avgQpRc;
}
+ if (m_isAbr)
+ {
+ if (m_param->rc.rateControlMode == X265_RC_ABR && !m_param->rc.bStatRead)
+ checkAndResetABR(rce, true);
+
+ if (m_param->rc.rateControlMode == X265_RC_CRF)
+ {
+ if (int(curEncData.m_avgQpRc + 0.5) == slice->m_sliceQp)
+ curEncData.m_rateFactor = m_rateFactorConstant;
+ else
+ {
+ /* If vbv changed the frame QP recalculate the rate-factor */
+ double baseCplx = m_ncu * (m_param->bframes ? 120 : 80);
+ double mbtree_offset = m_param->rc.cuTree ? (1.0 - m_param->rc.qCompress) * 13.5 : 0;
+ curEncData.m_rateFactor = pow(baseCplx, 1 - m_qCompress) /
+ x265_qp2qScale(int(curEncData.m_avgQpRc + 0.5) + mbtree_offset);
+ }
+ }
+ }
+
// Write frame stats into the stats file if 2 pass is enabled.
if (m_param->rc.bStatWrite)
{
More information about the x265-devel
mailing list