No, this is not. This is for a customer who wanted to be able to use qpfile with VBV. The first half is - I'm not sure about the second half of the patch.
On Thu, Mar 12, 2015 at 1:44 AM, Steve Borho <[email protected]> wrote: > On 03/11, [email protected] wrote: > > # HG changeset patch > > # User Aarthi Thirumalai > > # Date 1425994215 -19800 > > # Tue Mar 10 19:00:15 2015 +0530 > > # Node ID 9b7b93384e39e90cf2d4c0c0a53213abff362f70 > > # Parent 8f148ac8dbe4b68e88ceff84f40e33b29e888dc9 > > rc: recompute planned frame size when using vbv with --qpfile > > is this at all related to issue 111? > > > diff -r 8f148ac8dbe4 -r 9b7b93384e39 source/encoder/ratecontrol.cpp > > --- a/source/encoder/ratecontrol.cpp Tue Mar 10 15:46:36 2015 +0530 > > +++ b/source/encoder/ratecontrol.cpp Tue Mar 10 19:00:15 2015 +0530 > > @@ -1067,7 +1067,15 @@ > > { > > m_qp = (int32_t)(curFrame->m_forceqp + 0.5) - 1; > > m_qp = x265_clip3(QP_MIN, QP_MAX_MAX, m_qp); > > - rce->qpaRc = curEncData.m_avgQpRc = curEncData.m_avgQpAq = m_qp; > > + rce->qpaRc =curEncData.m_avgQpRc = curEncData.m_avgQpAq = m_qp; > > + if (m_isAbr) > > + { > > + rce->qpNoVbv = rce->qpaRc; > > + m_lastQScaleFor[m_sliceType] = x265_qp2qScale(rce->qpaRc); > > + if (rce->poc == 0) > > + m_lastQScaleFor[P_SLICE] = > m_lastQScaleFor[m_sliceType] * fabs(m_param->rc.ipFactor); > > + rce->frameSizePlanned = predictSize(&m_pred[m_sliceType], > rce->qpaRc, (double)m_currentSatd); > > + } > > } > > // Do not increment m_startEndOrder here. Make rateControlEnd of > previous thread > > // to wait until rateControlUpdateStats of this frame is called > > @@ -1360,13 +1368,14 @@ > > q += m_pbOffset; > > > > double qScale = x265_qp2qScale(q); > > + double lmin = 0, lmax = 0; > > if (m_isCbr) > > { > > qScale = tuneAbrQScaleFromFeedback(qScale); > > if (!m_isAbrReset) > > { > > - double lmin = m_lastQScaleFor[P_SLICE] / m_lstep; > > - double lmax = m_lastQScaleFor[P_SLICE] * m_lstep; > > + lmin = m_lastQScaleFor[P_SLICE] / m_lstep; > > + lmax = m_lastQScaleFor[P_SLICE] * m_lstep; > > qScale = x265_clip3(lmin, lmax, qScale); > > } > > q = x265_qScale2qp(qScale); > > @@ -1375,6 +1384,8 @@ > > if (!m_2pass && m_isVbv) > > { > > qScale = clipQscale(curFrame, rce, qScale); > > + if (m_pred[m_sliceType].count == 1) > > + qScale = x265_clip3(lmin, lmax, qScale); > > m_lastQScaleFor[m_sliceType] = qScale; > > rce->frameSizePlanned = predictSize(&m_pred[m_sliceType], > qScale, (double)m_currentSatd); > > } > > @@ -1460,7 +1471,7 @@ > > * tolerances, the bit distribution approaches that of > 2pass. */ > > > > double overflow = 1; > > - > > + double lqmin = 0, lqmax = 0; > > m_shortTermCplxSum *= 0.5; > > m_shortTermCplxCount *= 0.5; > > m_shortTermCplxSum += m_currentSatd / > (CLIP_DURATION(m_frameDuration) / BASE_FRAME_DURATION); > > @@ -1494,7 +1505,6 @@ > > { > > if (m_param->rc.rateControlMode != X265_RC_CRF) > > { > > - double lqmin = 0, lqmax = 0; > > lqmin = m_lastQScaleFor[m_sliceType] / m_lstep; > > lqmax = m_lastQScaleFor[m_sliceType] * m_lstep; > > if (!m_partialResidualFrames) > > @@ -1520,6 +1530,8 @@ > > q = x265_clip3(MIN_QPSCALE, MAX_MAX_QPSCALE, q); > > rce->qpNoVbv = x265_qScale2qp(q); > > q = clipQscale(curFrame, rce, q); > > + if (m_pred[m_sliceType].count == 1 && m_framesDone > 0) > > + q = x265_clip3(lqmin, lqmax, q); > > } > > m_lastQScaleFor[m_sliceType] = q; > > if ((m_curSlice->m_poc == 0 || m_lastQScaleFor[P_SLICE] < q) && > !(m_2pass && !m_isVbv)) > > _______________________________________________ > > x265-devel mailing list > > [email protected] > > https://mailman.videolan.org/listinfo/x265-devel > > -- > Steve Borho > _______________________________________________ > x265-devel mailing list > [email protected] > https://mailman.videolan.org/listinfo/x265-devel >
_______________________________________________ x265-devel mailing list [email protected] https://mailman.videolan.org/listinfo/x265-devel
