<div dir="ltr"># HG changeset patch<br># User gopi Satykrishna Akisetty<br># Date 1557138241 -19800<br>#      Mon May 06 15:54:01 2019 +0530<br># Node ID 27b80b586cf86c6786b70d41b3e95ac4dc4a967b<br># Parent  feec4bdf98663ac4a2561b63e1ccec423c7d26a4<br>Fix issues in configuring cbQpOffset and crQpOffset for 444 input <div><br></div><div>Pushed code to x265 public repo.</div><div><br></div><div>Thanks & Regards,</div><div>Dinesh <br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, May 7, 2019 at 11:03 AM <<a href="mailto:gopi.satykrishna@multicorewareinc.com">gopi.satykrishna@multicorewareinc.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"># HG changeset patch<br>
# User gopi Satykrishna Akisetty<br>
# Date 1557138241 -19800<br>
#      Mon May 06 15:54:01 2019 +0530<br>
# Node ID 27b80b586cf86c6786b70d41b3e95ac4dc4a967b<br>
# Parent  feec4bdf98663ac4a2561b63e1ccec423c7d26a4<br>
Fix issues in configuring cbQpOffset and crQpOffset for 444 input<br>
<br>
diff -r feec4bdf9866 -r 27b80b586cf8 doc/reST/cli.rst<br>
--- a/doc/reST/cli.rst  Tue Apr 30 09:41:10 2019 +0530<br>
+++ b/doc/reST/cli.rst  Mon May 06 15:54:01 2019 +0530<br>
@@ -1333,6 +1333,10 @@<br>
 judder is happening, and allow the encoder to use some blur in these<br>
 areas of high motion.<br>
<br>
+In 444, chroma gets twice as much resolution, so halve the quality when psy-rd is enabled.<br>
+So when psy-rd is enabled for 444 videos, cbQpOffset and crQpOffset are set to value 6,<br>
+if they are not explicitly set.<br>
+<br>
 .. option:: --psy-rd <float><br>
<br>
        Influence rate distortion optimizated mode decision to preserve the<br>
diff -r feec4bdf9866 -r 27b80b586cf8 source/encoder/encoder.cpp<br>
--- a/source/encoder/encoder.cpp        Tue Apr 30 09:41:10 2019 +0530<br>
+++ b/source/encoder/encoder.cpp        Mon May 06 15:54:01 2019 +0530<br>
@@ -80,6 +80,7 @@<br>
  * TODO: come up an algorithm for adoptive threshold */<br>
 #define MVTHRESHOLD (10*10)<br>
 #define PU_2Nx2N 1<br>
+#define MAX_CHROMA_QP_OFFSET 12<br>
 static const char* defaultAnalysisFileName = "x265_analysis.dat";<br>
<br>
 using namespace X265_NS;<br>
@@ -2802,8 +2803,13 @@<br>
     /* In 444, chroma gets twice as much resolution, so halve quality when psy-rd is enabled */<br>
     if (p->internalCsp == X265_CSP_I444 && p->psyRd)<br>
     {<br>
-        p->cbQpOffset += 6;<br>
-        p->crQpOffset += 6;<br>
+        if (!p->cbQpOffset && !p->crQpOffset)<br>
+        {<br>
+            p->cbQpOffset = MAX_CHROMA_QP_OFFSET / 2;<br>
+            p->crQpOffset = MAX_CHROMA_QP_OFFSET / 2;<br>
+            x265_log(p, X265_LOG_WARNING, "halving the quality when psy-rd is enabled for 444 input."<br>
+                     " Setting cbQpOffset = %d and crQpOffset = %d\n", p->cbQpOffset, p->crQpOffset);<br>
+        }<br>
     }<br>
<br>
     if (p->bLossless)<br>
_______________________________________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org" target="_blank">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" rel="noreferrer" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
</blockquote></div>