[x265] [PATCH] fix to use rd-refine and dynamic-refine together

Shanmathi Paramanandam shanmathi.paramanandam at multicorewareinc.com
Wed Jan 29 04:01:14 UTC 2025


>From ddf8d39d0efadb8e5612a3645e4385ba51f9825e Mon Sep 17 00:00:00 2001
From: Shanmathi Paramanandam <shanmathi.paramanandam at multicorewareinc.com>
Date: Fri, 17 Jan 2025 15:21:37 +0530
Subject: [PATCH] fix to resolve issue when rd-refine and dynamic-refine are used together

This patch also disables rd refine when enabled with scc and dynamic refine/refine-inter

---
 source/common/param.cpp     | 13 +++++++++++++
 source/encoder/analysis.cpp | 17 ++++++++++++-----
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/source/common/param.cpp b/source/common/param.cpp
index ead908013..b06db8a43 100755
--- a/source/common/param.cpp
+++ b/source/common/param.cpp
@@ -2025,6 +2025,19 @@ int x265_check_params(x265_param* param)
         if (checkValid)
             param->bEnableSCC = 0;
     }
+    if (!!param->bEnableSCC)
+    {
+        if (param->bEnableRdRefine && param->bDynamicRefine)
+        {
+            param->bEnableRdRefine = 0;
+            x265_log(param, X265_LOG_WARNING, "Disabling rd-refine as it can not be used with scc and dynamic-refine\n");
+        }
+        if (param->bEnableRdRefine && param->interRefine > 0)
+        {
+            param->bEnableRdRefine = 0;
+            x265_log(param, X265_LOG_WARNING, "Disabling rd-refine as it can not be used with scc and inter-refine\n");
+        }
+    }
     CHECK(!!param->bEnableSCC&& param->rdLevel != 6, "Enabling scc extension in x265 requires rdlevel of 6 ");
 #endif

diff --git a/source/encoder/analysis.cpp b/source/encoder/analysis.cpp
index da5aeca77..5475e4800 100644
--- a/source/encoder/analysis.cpp
+++ b/source/encoder/analysis.cpp
@@ -2960,12 +2960,19 @@ void Analysis::recodeCU(const CUData& parentCTU, const CUGeom& cuGeom, int32_t q

         if (m_refineLevel > 1 || (m_refineLevel && parentCTU.m_predMode[cuGeom.absPartIdx] == MODE_SKIP  && !mode.cu.isSkipped(0)))
         {
-            if (parentCTU.m_cuDepth[cuGeom.absPartIdx] < 4 && mightNotSplit)
-                m_evaluateInter = 1;
+            if ((m_slice->m_origSliceType != I_SLICE))
+            {
+                if (parentCTU.m_cuDepth[cuGeom.absPartIdx] < 4 && mightNotSplit)
+                    m_evaluateInter = 1;
+                else
+                    bDecidedDepth = true;
+                m_param->rdLevel > 4 ? compressInterCU_rd5_6(parentCTU, cuGeom, qp) : compressInterCU_rd0_4(parentCTU, cuGeom, qp);
+                m_evaluateInter = 0;
+            }
             else
-                bDecidedDepth = true;
-            m_param->rdLevel > 4 ? compressInterCU_rd5_6(parentCTU, cuGeom, qp) : compressInterCU_rd0_4(parentCTU, cuGeom, qp);
-            m_evaluateInter = 0;
+            {
+                compressIntraCU(parentCTU, cuGeom, qp);
+            }
         }
     }
     if (!bDecidedDepth || split)
--
2.47.0.windows.1



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20250129/aae74939/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-fix-to-use-rd-refine-and-dynamic-refine.patch
Type: application/octet-stream
Size: 2838 bytes
Desc: 0001-fix-to-use-rd-refine-and-dynamic-refine.patch
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20250129/aae74939/attachment-0001.obj>


More information about the x265-devel mailing list