Thanks, very interesting fix. Can you give us some background here? Where did we the divide by 3.0 come from?
On Tue, Mar 25, 2014 at 9:01 AM, Satoshi Nakagawa <[email protected]>wrote: > # HG changeset patch > # User Satoshi Nakagawa <[email protected]> > # Date 1395672158 -32400 > # Mon Mar 24 23:42:38 2014 +0900 > # Node ID 08584b5913bce6a5f9d2f0d408fcdace6aa83a65 > # Parent fdd7c6168cf42a11240ff1c7fc7b401605524db2 > fix chroma lambda weighting > > diff -r fdd7c6168cf4 -r 08584b5913bc source/encoder/frameencoder.cpp > --- a/source/encoder/frameencoder.cpp Fri Mar 21 14:44:35 2014 -0500 > +++ b/source/encoder/frameencoder.cpp Mon Mar 24 23:42:38 2014 +0900 > @@ -335,11 +335,10 @@ > // instead we weight the distortion of chroma. > int chromaQPOffset = slice->getPPS()->getChromaCbQpOffset() + > slice->getSliceQpDeltaCb(); > int qpc = Clip3(0, MAX_MAX_QP, qp + chromaQPOffset); > - double cbWeight = pow(2.0, (qp - g_chromaScale[chFmt][qpc])); // > takes into account of the chroma qp mapping and chroma qp Offset > - > + double cbWeight = pow(2.0, (qp - g_chromaScale[chFmt][qpc]) / 3.0); > // takes into account of the chroma qp mapping and chroma qp Offset > chromaQPOffset = slice->getPPS()->getChromaCrQpOffset() + > slice->getSliceQpDeltaCr(); > qpc = Clip3(0, MAX_MAX_QP, qp + chromaQPOffset); > - double crWeight = pow(2.0, (qp - g_chromaScale[chFmt][qpc])); // > takes into account of the chroma qp mapping and chroma qp Offset > + double crWeight = pow(2.0, (qp - g_chromaScale[chFmt][qpc]) / 3.0); > // takes into account of the chroma qp mapping and chroma qp Offset > double chromaLambda = lambda / crWeight; > > m_rows[row].m_search.setQPLambda(qp, lambda, chromaLambda); > @@ -376,10 +375,10 @@ > int qpc; > int chromaQPOffset = slice->getPPS()->getChromaCbQpOffset() + > slice->getSliceQpDeltaCb(); > qpc = Clip3(0, MAX_MAX_QP, qp + chromaQPOffset); > - double cbWeight = pow(2.0, (qp - g_chromaScale[chFmt][qpc])); // > takes into account of the chroma qp mapping and chroma qp Offset > + double cbWeight = pow(2.0, (qp - g_chromaScale[chFmt][qpc]) / 3.0); > // takes into account of the chroma qp mapping and chroma qp Offset > chromaQPOffset = slice->getPPS()->getChromaCrQpOffset() + > slice->getSliceQpDeltaCr(); > qpc = Clip3(0, MAX_MAX_QP, qp + chromaQPOffset); > - double crWeight = pow(2.0, (qp - g_chromaScale[chFmt][qpc])); // > takes into account of the chroma qp mapping and chroma qp Offset > + double crWeight = pow(2.0, (qp - g_chromaScale[chFmt][qpc]) / 3.0); > // takes into account of the chroma qp mapping and chroma qp Offset > double chromaLambda = lambda / crWeight; > > // NOTE: set SAO lambda every Frame > _______________________________________________ > 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
