# HG changeset patch
# User gopi Satykrishna Akisetty
# Date 1557138241 -19800
#      Mon May 06 15:54:01 2019 +0530
# Node ID 27b80b586cf86c6786b70d41b3e95ac4dc4a967b
# Parent  feec4bdf98663ac4a2561b63e1ccec423c7d26a4
Fix issues in configuring cbQpOffset and crQpOffset for 444 input

diff -r feec4bdf9866 -r 27b80b586cf8 doc/reST/cli.rst
--- a/doc/reST/cli.rst  Tue Apr 30 09:41:10 2019 +0530
+++ b/doc/reST/cli.rst  Mon May 06 15:54:01 2019 +0530
@@ -1333,6 +1333,10 @@
 judder is happening, and allow the encoder to use some blur in these
 areas of high motion.
 
+In 444, chroma gets twice as much resolution, so halve the quality when psy-rd 
is enabled.
+So when psy-rd is enabled for 444 videos, cbQpOffset and crQpOffset are set to 
value 6,
+if they are not explicitly set.
+
 .. option:: --psy-rd <float>
 
        Influence rate distortion optimizated mode decision to preserve the
diff -r feec4bdf9866 -r 27b80b586cf8 source/encoder/encoder.cpp
--- a/source/encoder/encoder.cpp        Tue Apr 30 09:41:10 2019 +0530
+++ b/source/encoder/encoder.cpp        Mon May 06 15:54:01 2019 +0530
@@ -80,6 +80,7 @@
  * TODO: come up an algorithm for adoptive threshold */
 #define MVTHRESHOLD (10*10)
 #define PU_2Nx2N 1
+#define MAX_CHROMA_QP_OFFSET 12
 static const char* defaultAnalysisFileName = "x265_analysis.dat";
 
 using namespace X265_NS;
@@ -2802,8 +2803,13 @@
     /* In 444, chroma gets twice as much resolution, so halve quality when 
psy-rd is enabled */
     if (p->internalCsp == X265_CSP_I444 && p->psyRd)
     {
-        p->cbQpOffset += 6;
-        p->crQpOffset += 6;
+        if (!p->cbQpOffset && !p->crQpOffset)
+        {
+            p->cbQpOffset = MAX_CHROMA_QP_OFFSET / 2;
+            p->crQpOffset = MAX_CHROMA_QP_OFFSET / 2;
+            x265_log(p, X265_LOG_WARNING, "halving the quality when psy-rd is 
enabled for 444 input."
+                     " Setting cbQpOffset = %d and crQpOffset = %d\n", 
p->cbQpOffset, p->crQpOffset);
+        }
     }
 
     if (p->bLossless)
# HG changeset patch
# User gopi Satykrishna Akisetty
# Date 1557138241 -19800
#      Mon May 06 15:54:01 2019 +0530
# Node ID 27b80b586cf86c6786b70d41b3e95ac4dc4a967b
# Parent  feec4bdf98663ac4a2561b63e1ccec423c7d26a4
Fix issues in configuring cbQpOffset and crQpOffset for 444 input

diff -r feec4bdf9866 -r 27b80b586cf8 doc/reST/cli.rst
--- a/doc/reST/cli.rst	Tue Apr 30 09:41:10 2019 +0530
+++ b/doc/reST/cli.rst	Mon May 06 15:54:01 2019 +0530
@@ -1333,6 +1333,10 @@
 judder is happening, and allow the encoder to use some blur in these
 areas of high motion.
 
+In 444, chroma gets twice as much resolution, so halve the quality when psy-rd is enabled.
+So when psy-rd is enabled for 444 videos, cbQpOffset and crQpOffset are set to value 6,
+if they are not explicitly set.
+
 .. option:: --psy-rd <float>
 
 	Influence rate distortion optimizated mode decision to preserve the
diff -r feec4bdf9866 -r 27b80b586cf8 source/encoder/encoder.cpp
--- a/source/encoder/encoder.cpp	Tue Apr 30 09:41:10 2019 +0530
+++ b/source/encoder/encoder.cpp	Mon May 06 15:54:01 2019 +0530
@@ -80,6 +80,7 @@
  * TODO: come up an algorithm for adoptive threshold */
 #define MVTHRESHOLD (10*10)
 #define PU_2Nx2N 1
+#define MAX_CHROMA_QP_OFFSET 12
 static const char* defaultAnalysisFileName = "x265_analysis.dat";
 
 using namespace X265_NS;
@@ -2802,8 +2803,13 @@
     /* In 444, chroma gets twice as much resolution, so halve quality when psy-rd is enabled */
     if (p->internalCsp == X265_CSP_I444 && p->psyRd)
     {
-        p->cbQpOffset += 6;
-        p->crQpOffset += 6;
+        if (!p->cbQpOffset && !p->crQpOffset)
+        {
+            p->cbQpOffset = MAX_CHROMA_QP_OFFSET / 2;
+            p->crQpOffset = MAX_CHROMA_QP_OFFSET / 2;
+            x265_log(p, X265_LOG_WARNING, "halving the quality when psy-rd is enabled for 444 input."
+                     " Setting cbQpOffset = %d and crQpOffset = %d\n", p->cbQpOffset, p->crQpOffset);
+        }
     }
 
     if (p->bLossless)
_______________________________________________
x265-devel mailing list
[email protected]
https://mailman.videolan.org/listinfo/x265-devel

Reply via email to