[x265] [PATCH 1 of 2] rdcost: auto down-scale psy-rd at higher QPs

Steve Borho steve at borho.org
Thu Jan 29 17:50:32 CET 2015


# HG changeset patch
# User Steve Borho <steve at borho.org>
# Date 1422549267 21600
#      Thu Jan 29 10:34:27 2015 -0600
# Node ID e91e608e751339b28746f928835fb4c1e3b2d4fb
# Parent  5e5dc3763f6386da9722903033a2b9dd263a5226
rdcost: auto down-scale psy-rd at higher QPs

When QP gets above 42, turn down psy-rd by half. When it gets to 50 disable it
outright. Note that we're not mucking with psy-rdoq at this time.

diff -r 5e5dc3763f63 -r e91e608e7513 source/encoder/rdcost.h
--- a/source/encoder/rdcost.h	Thu Jan 29 10:37:54 2015 -0600
+++ b/source/encoder/rdcost.h	Thu Jan 29 10:34:27 2015 -0600
@@ -48,10 +48,17 @@
     {
         m_qp = qp;
         int qpCb, qpCr;
+
         /* Scale PSY RD factor by a slice type factor */
         static const uint32_t psyScaleFix8[3] = { 300, 256, 96 }; /* B, P, I */
         m_psyRd = (m_psyRdBase * psyScaleFix8[slice.m_sliceType]) >> 8;
 
+        /* Scale PSY RD factor by QP, at high QP psy-rd can cause artifacts */
+        if (qp >= 42)
+            m_psyRd >>= 1;
+        else if (qp >= 50)
+            m_psyRd = 0;
+
         setLambda(x265_lambda2_tab[qp], x265_lambda_tab[qp]);
         if (slice.m_sps->chromaFormatIdc == X265_CSP_I420)
             qpCb = x265_clip3(QP_MIN, QP_MAX_MAX, (int)g_chromaScale[qp + slice.m_pps->chromaQpOffset[0]]);


More information about the x265-devel mailing list