Looks good. Pushed to default. On Wed, Apr 22, 2020 at 12:44 PM <[email protected]> wrote:
> # HG changeset patch > # User Kirithika <[email protected]> > # Date 1571388480 -19800 > # Fri Oct 18 14:18:00 2019 +0530 > # Node ID 851a02eea935bacf74eb35655798f72892580880 > # Parent 6bb2d88029c2e13fa13b5b053aa725d4fa84a084 > Fix the RC Pass2 ABR > > This commit does the following changes: > 1. Fix the order of RC Pass 1 stats Analysis in Pass2 > 2. Fix the aggressive Qp tuning for I/P frames in Pass2 > > diff -r 6bb2d88029c2 -r 851a02eea935 source/encoder/ratecontrol.cpp > --- a/source/encoder/ratecontrol.cpp Thu Apr 09 13:09:15 2020 +0530 > +++ b/source/encoder/ratecontrol.cpp Fri Oct 18 14:18:00 2019 +0530 > @@ -833,7 +833,7 @@ > /* weighted average of cplx of future frames */ > for (int j = 1; j < cplxBlur * 2 && j < m_numEntries - i; j++) > { > - int index = m_encOrder[i + j]; > + int index = i+j; > RateControlEntry *rcj = &m_rce2Pass[index]; > weight *= 1 - pow(rcj->iCuCount / m_ncu, 2); > if (weight < 0.0001) > @@ -846,7 +846,7 @@ > weight = 1.0; > for (int j = 0; j <= cplxBlur * 2 && j <= i; j++) > { > - int index = m_encOrder[i - j]; > + int index = i-j; > RateControlEntry *rcj = &m_rce2Pass[index]; > gaussianWeight = weight * exp(-j * j / 200.0); > weightSum += gaussianWeight; > @@ -855,7 +855,7 @@ > if (weight < .0001) > break; > } > - m_rce2Pass[m_encOrder[i]].blurredComplexity = cplxSum / weightSum; > + m_rce2Pass[i].blurredComplexity= cplxSum / weightSum; > } > CHECKED_MALLOC(qScale, double, m_numEntries); > if (filterSize > 1) > @@ -874,7 +874,7 @@ > expectedBits = 1; > for (int i = 0; i < m_numEntries; i++) > { > - RateControlEntry* rce = &m_rce2Pass[m_encOrder[i]]; > + RateControlEntry* rce = &m_rce2Pass[i]; > double q = getQScale(rce, 1.0); > expectedBits += qScale2bits(rce, q); > m_lastQScaleFor[rce->sliceType] = q; > @@ -897,15 +897,15 @@ > /* find qscale */ > for (int i = 0; i < m_numEntries; i++) > { > - RateControlEntry *rce = &m_rce2Pass[m_encOrder[i]]; > + RateControlEntry *rce = &m_rce2Pass[i]; > qScale[i] = getQScale(rce, rateFactor); > m_lastQScaleFor[rce->sliceType] = qScale[i]; > } > > /* fixed I/B qscale relative to P */ > - for (int i = m_numEntries - 1; i >= 0; i--) > + for (int i = 0; i < m_numEntries; i++) > { > - qScale[i] = getDiffLimitedQScale(&m_rce2Pass[m_encOrder[i]], > qScale[i]); > + qScale[i] = getDiffLimitedQScale(&m_rce2Pass[i], qScale[i]); > X265_CHECK(qScale[i] >= 0, "qScale became negative\n"); > } > > @@ -916,7 +916,6 @@ > for (int i = 0; i < m_numEntries; i++) > { > double q = 0.0, sum = 0.0; > - > for (int j = 0; j < filterSize; j++) > { > int idx = i + j - filterSize / 2; > @@ -924,7 +923,7 @@ > double coeff = qBlur == 0 ? 1.0 : exp(-d * d / (qBlur > * qBlur)); > if (idx < 0 || idx >= m_numEntries) > continue; > - if (m_rce2Pass[m_encOrder[i]].sliceType != > m_rce2Pass[m_encOrder[idx]].sliceType) > + if (m_rce2Pass[i].sliceType != > m_rce2Pass[idx].sliceType) > continue; > q += qScale[idx] * coeff; > sum += coeff; > @@ -936,7 +935,7 @@ > /* find expected bits */ > for (int i = 0; i < m_numEntries; i++) > { > - RateControlEntry *rce = &m_rce2Pass[m_encOrder[i]]; > + RateControlEntry *rce = &m_rce2Pass[i]; > rce->newQScale = clipQscale(NULL, rce, blurredQscale[i]); // > check if needed > X265_CHECK(rce->newQScale >= 0, "new Qscale is negative\n"); > expectedBits += qScale2bits(rce, rce->newQScale); > @@ -1956,7 +1955,7 @@ > /* Adjust quant based on the difference between > * achieved and expected bitrate so far */ > double curTime = (double)rce->encodeOrder / m_numEntries; > - double w = x265_clip3(0.0, 1.0, curTime * 100); > + double w = x265_clip3(0.0, 1.0, curTime); > q *= pow((double)m_totalBits / m_expectedBitsSum, w); > } > if (m_framesDone == 0 && m_param->rc.rateControlMode == > X265_RC_ABR && m_isGrainEnabled) > _______________________________________________ > x265-devel mailing list > [email protected] > https://mailman.videolan.org/listinfo/x265-devel > -- Regards, *Aruna Matheswaran,* Video Codec Engineer, Media & AI analytics BU,
_______________________________________________ x265-devel mailing list [email protected] https://mailman.videolan.org/listinfo/x265-devel
