>From ddf8d39d0efadb8e5612a3645e4385ba51f9825e Mon Sep 17 00:00:00 2001
From: Shanmathi Paramanandam <shanmathi.paramanan...@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



Attachment: 0001-fix-to-use-rd-refine-and-dynamic-refine.patch
Description: 0001-fix-to-use-rd-refine-and-dynamic-refine.patch

_______________________________________________
x265-devel mailing list
x265-devel@videolan.org
https://mailman.videolan.org/listinfo/x265-devel

Reply via email to