[x265] [PATCH] Fix scc crash on multipass encode
Anusuya Kumarasamy
anusuya.kumarasamy at multicorewareinc.com
Mon Aug 26 05:02:36 UTC 2024
>From 09e6d53ddbf5159dc711ea0b45c089b52413d5fe Mon Sep 17 00:00:00 2001
From: AnusuyaKumarasamy <anusuya.kumarasamy at multicorewareinc.com>
Date: Mon, 19 Aug 2024 11:55:53 +0530
Subject: [PATCH] Fix scc crash on multipass encode
---
source/encoder/analysis.cpp | 9 +++++++++
source/encoder/search.cpp | 2 +-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/source/encoder/analysis.cpp b/source/encoder/analysis.cpp
index c4261f114..53a19b29f 100644
--- a/source/encoder/analysis.cpp
+++ b/source/encoder/analysis.cpp
@@ -2132,6 +2132,9 @@ SplitData Analysis::compressInterCU_rd5_6(const
CUData& parentCTU, const CUGeom&
md.pred[PRED_2Nx2N].cu.initSubCU(parentCTU, cuGeom,
qp);
checkInter_rd5_6(md.pred[PRED_2Nx2N], cuGeom,
SIZE_2Nx2N, refMasks);
checkBestMode(md.pred[PRED_2Nx2N], cuGeom.depth);
+#if ENABLE_SCC_EXT
+ interBest = md.bestMode;
+#endif
}
mightSplit &= !bDecidedDepth;
}
@@ -2153,6 +2156,9 @@ SplitData Analysis::compressInterCU_rd5_6(const
CUData& parentCTU, const CUGeom&
if (m_param->recursionSkipMode && depth &&
m_modeDepth[depth - 1].bestMode)
skipRecursion = md.bestMode &&
!md.bestMode->cu.getQtRootCbf(0);
+#if ENABLE_SCC_EXT
+ interBest = md.bestMode;
+#endif
}
if (m_param->analysisLoadReuseLevel > 4 &&
m_reusePartSize[cuGeom.absPartIdx] == SIZE_2Nx2N)
skipRectAmp = true && !!md.bestMode;
@@ -2177,6 +2183,9 @@ SplitData Analysis::compressInterCU_rd5_6(const
CUData& parentCTU, const CUGeom&
if (m_param->recursionSkipMode && depth &&
m_modeDepth[depth - 1].bestMode)
skipRecursion = md.bestMode &&
!md.bestMode->cu.getQtRootCbf(0);
+#if ENABLE_SCC_EXT
+ interBest = md.bestMode;
+#endif
}
}
}
diff --git a/source/encoder/search.cpp b/source/encoder/search.cpp
index 71a52a1cd..0df11b431 100644
--- a/source/encoder/search.cpp
+++ b/source/encoder/search.cpp
@@ -2507,7 +2507,7 @@ void Search::predInterSearch(Mode& interMode, const
CUGeom& cuGeom, bool bChroma
mvp = checkBestMVP(amvp, outmv, mvpIdx, bits, cost);
#if ENABLE_SCC_EXT
- if (list <= 1 && ref <= 1 && (cu.m_partSize[0] ==
SIZE_2NxN || cu.m_partSize[0] == SIZE_Nx2N) && (1 << cu.m_log2CUSize[0]) <=
16)
+ if (m_param->bEnableSCC && (list <= 1 && ref <= 1 &&
(cu.m_partSize[0] == SIZE_2NxN || cu.m_partSize[0] == SIZE_Nx2N) && (1 <<
cu.m_log2CUSize[0]) <= 16))
{
iMVCandList[4 * list + 2 * ref + puIdx] = outmv;
}
--
2.36.0.windows.1
On Mon, Aug 19, 2024 at 12:52 PM Anusuya Kumarasamy <
anusuya.kumarasamy at multicorewareinc.com> wrote:
> From 3c0f24f911ab0366e48734b172ed93900167fb41 Mon Sep 17 00:00:00 2001
> From: AnusuyaKumarasamy <anusuya.kumarasamy at multicorewareinc.com>
> Date: Mon, 19 Aug 2024 11:55:53 +0530
> Subject: [PATCH] Fix scc crash on multipass encode
>
> ---
> source/encoder/analysis.cpp | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/source/encoder/analysis.cpp b/source/encoder/analysis.cpp
> index c4261f114..53a19b29f 100644
> --- a/source/encoder/analysis.cpp
> +++ b/source/encoder/analysis.cpp
> @@ -2132,6 +2132,9 @@ SplitData Analysis::compressInterCU_rd5_6(const
> CUData& parentCTU, const CUGeom&
> md.pred[PRED_2Nx2N].cu.initSubCU(parentCTU, cuGeom,
> qp);
> checkInter_rd5_6(md.pred[PRED_2Nx2N], cuGeom,
> SIZE_2Nx2N, refMasks);
> checkBestMode(md.pred[PRED_2Nx2N], cuGeom.depth);
> +#if ENABLE_SCC_EXT
> + interBest = md.bestMode;
> +#endif
> }
> mightSplit &= !bDecidedDepth;
> }
> @@ -2153,6 +2156,9 @@ SplitData Analysis::compressInterCU_rd5_6(const
> CUData& parentCTU, const CUGeom&
>
> if (m_param->recursionSkipMode && depth &&
> m_modeDepth[depth - 1].bestMode)
> skipRecursion = md.bestMode &&
> !md.bestMode->cu.getQtRootCbf(0);
> +#if ENABLE_SCC_EXT
> + interBest = md.bestMode;
> +#endif
> }
> if (m_param->analysisLoadReuseLevel > 4 &&
> m_reusePartSize[cuGeom.absPartIdx] == SIZE_2Nx2N)
> skipRectAmp = true && !!md.bestMode;
> @@ -2177,6 +2183,9 @@ SplitData Analysis::compressInterCU_rd5_6(const
> CUData& parentCTU, const CUGeom&
>
> if (m_param->recursionSkipMode && depth &&
> m_modeDepth[depth - 1].bestMode)
> skipRecursion = md.bestMode &&
> !md.bestMode->cu.getQtRootCbf(0);
> +#if ENABLE_SCC_EXT
> + interBest = md.bestMode;
> +#endif
> }
> }
> }
> --
> 2.36.0.windows.1
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20240826/82e6a002/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fix-scc-crash.diff
Type: application/octet-stream
Size: 2828 bytes
Desc: not available
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20240826/82e6a002/attachment.obj>
More information about the x265-devel
mailing list