On Wed, Oct 10, 2018 at 2:22 PM <[email protected]> wrote: > # HG changeset patch > # User Aruna Matheswaran <[email protected]> > # Date 1539151768 -19800 > # Wed Oct 10 11:39:28 2018 +0530 > # Node ID 9f74ae7aa489ed0c981dbf1f4a8dddd771046490 > # Parent fd517ae68f93dbfdd1bff45a9dd8e626523542b6 > rc: Fix rowStat computation in const-vbv > > diff -r fd517ae68f93 -r 9f74ae7aa489 source/encoder/frameencoder.cpp > --- a/source/encoder/frameencoder.cpp Tue Sep 25 16:02:31 2018 +0530 > +++ b/source/encoder/frameencoder.cpp Wed Oct 10 11:39:28 2018 +0530 > @@ -1599,11 +1599,11 @@ > if (!m_param->bEnableWavefront && col == numCols - 1) > { > double qpBase = curEncData.m_cuStat[cuAddr].baseQp; > - int reEncode = > m_top->m_rateControl->rowVbvRateControl(m_frame, row, &m_rce, qpBase, > m_sliceBaseRow, sliceId); > + curRow.reEncode = > m_top->m_rateControl->rowVbvRateControl(m_frame, row, &m_rce, qpBase, > m_sliceBaseRow, sliceId); > qpBase = x265_clip3((double)m_param->rc.qpMin, > (double)m_param->rc.qpMax, qpBase); > curEncData.m_rowStat[row].rowQp = qpBase; > curEncData.m_rowStat[row].rowQpScale = > x265_qp2qScale(qpBase); > - if (reEncode < 0) > + if (curRow.reEncode < 0) > { > x265_log(m_param, X265_LOG_DEBUG, "POC %d row %d - > encode restart required for VBV, to %.2f from %.2f\n", > m_frame->m_poc, row, qpBase, > curEncData.m_cuStat[cuAddr].baseQp); > @@ -1642,17 +1642,19 @@ > curEncData.m_rowStat[r].sumQpRc += > curEncData.m_cuStat[c].baseQp; > curEncData.m_rowStat[r].numEncodedCUs = c; > } > + if (curRow.reEncode < 0) > + break; > startCuAddr = EndCuAddr - numCols; > EndCuAddr = startCuAddr + 1; > } > } > double qpBase = curEncData.m_cuStat[cuAddr].baseQp; > - int reEncode = > m_top->m_rateControl->rowVbvRateControl(m_frame, row, &m_rce, qpBase, > m_sliceBaseRow, sliceId); > + curRow.reEncode = > m_top->m_rateControl->rowVbvRateControl(m_frame, row, &m_rce, qpBase, > m_sliceBaseRow, sliceId); > qpBase = x265_clip3((double)m_param->rc.qpMin, > (double)m_param->rc.qpMax, qpBase); > curEncData.m_rowStat[row].rowQp = qpBase; > curEncData.m_rowStat[row].rowQpScale = > x265_qp2qScale(qpBase); > > - if (reEncode < 0) > + if (curRow.reEncode < 0) > { > x265_log(m_param, X265_LOG_DEBUG, "POC %d row %d - > encode restart required for VBV, to %.2f from %.2f\n", > m_frame->m_poc, row, qpBase, > curEncData.m_cuStat[cuAddr].baseQp); > diff -r fd517ae68f93 -r 9f74ae7aa489 source/encoder/frameencoder.h > --- a/source/encoder/frameencoder.h Tue Sep 25 16:02:31 2018 +0530 > +++ b/source/encoder/frameencoder.h Wed Oct 10 11:39:28 2018 +0530 > @@ -97,6 +97,8 @@ > volatile uint32_t completed; > volatile uint32_t avgQPComputed; > > + volatile int reEncode; > + > /* called at the start of each frame to initialize state */ > void init(Entropy& initContext, unsigned int sid) > { > @@ -105,6 +107,7 @@ > completed = 0; > avgQPComputed = 0; > sliceId = sid; > + reEncode = 0; > memset(&rowStats, 0, sizeof(rowStats)); > rowGoOnCoder.load(initContext); > } > _______________________________________________ > x265-devel mailing list > [email protected] > https://mailman.videolan.org/listinfo/x265-devel
Thank you. Pushed to stable.
_______________________________________________ x265-devel mailing list [email protected] https://mailman.videolan.org/listinfo/x265-devel
