# HG changeset patch
# User gopi Satykrishna Akisetty
# Date 1556272415 -19800
# Fri Apr 26 15:23:35 2019 +0530
# Node ID b0db87e717e8b3629550aa67d734d5d74de0c66b
# Parent bac0e1acb874213d4002f47ce88d6abe2475d957
[x265 patch] analysis: For inter-refine level 1, evaluate smaller CU sizes only
when the current
block is decided as "skip" by the save mode
diff -r bac0e1acb874 -r b0db87e717e8 source/encoder/analysis.cpp
--- a/source/encoder/analysis.cpp Sat Apr 13 16:03:05 2019 +0200
+++ b/source/encoder/analysis.cpp Fri Apr 26 15:23:35 2019 +0530
@@ -2412,6 +2412,7 @@
bool mightSplit = !(cuGeom.flags & CUGeom::LEAF);
bool mightNotSplit = !(cuGeom.flags & CUGeom::SPLIT_MANDATORY);
bool bDecidedDepth = parentCTU.m_cuDepth[cuGeom.absPartIdx] == depth;
+ int split = 0;
TrainingData td;
td.init(parentCTU, cuGeom);
@@ -2420,8 +2421,13 @@
m_refineLevel = m_param->interRefine;
else
m_refineLevel = m_frame->m_classifyFrame ? 1 : 3;
- int split = (m_param->scaleFactor && bDecidedDepth && (!mightNotSplit ||
- (m_refineLevel && cuGeom.log2CUSize ==
(uint32_t)(g_log2Size[m_param->minCUSize] + 1))));
+
+ if (m_param->interRefine == 1)
+ split = (m_param->scaleFactor && bDecidedDepth &&
parentCTU.m_predMode[cuGeom.absPartIdx] == MODE_SKIP && (!mightNotSplit ||
+ (m_refineLevel && cuGeom.log2CUSize ==
(uint32_t)(g_log2Size[m_param->minCUSize] + 1))));
+ else
+ split = (m_param->scaleFactor && bDecidedDepth && (!mightNotSplit ||
+ (m_refineLevel && cuGeom.log2CUSize ==
(uint32_t)(g_log2Size[m_param->minCUSize] + 1))));
td.split = split;
if ((bDecidedDepth && mightNotSplit) || (m_param->bAnalysisType ==
HEVC_INFO && parentCTU.m_cuDepth[cuGeom.absPartIdx] == 4))
# HG changeset patch
# User gopi Satykrishna Akisetty
# Date 1556272415 -19800
# Fri Apr 26 15:23:35 2019 +0530
# Node ID b0db87e717e8b3629550aa67d734d5d74de0c66b
# Parent bac0e1acb874213d4002f47ce88d6abe2475d957
[x265 patch] analysis: For inter-refine level 1, evaluate smaller CU sizes only when the current
block is decided as "skip" by the save mode
diff -r bac0e1acb874 -r b0db87e717e8 source/encoder/analysis.cpp
--- a/source/encoder/analysis.cpp Sat Apr 13 16:03:05 2019 +0200
+++ b/source/encoder/analysis.cpp Fri Apr 26 15:23:35 2019 +0530
@@ -2412,6 +2412,7 @@
bool mightSplit = !(cuGeom.flags & CUGeom::LEAF);
bool mightNotSplit = !(cuGeom.flags & CUGeom::SPLIT_MANDATORY);
bool bDecidedDepth = parentCTU.m_cuDepth[cuGeom.absPartIdx] == depth;
+ int split = 0;
TrainingData td;
td.init(parentCTU, cuGeom);
@@ -2420,8 +2421,13 @@
m_refineLevel = m_param->interRefine;
else
m_refineLevel = m_frame->m_classifyFrame ? 1 : 3;
- int split = (m_param->scaleFactor && bDecidedDepth && (!mightNotSplit ||
- (m_refineLevel && cuGeom.log2CUSize == (uint32_t)(g_log2Size[m_param->minCUSize] + 1))));
+
+ if (m_param->interRefine == 1)
+ split = (m_param->scaleFactor && bDecidedDepth && parentCTU.m_predMode[cuGeom.absPartIdx] == MODE_SKIP && (!mightNotSplit ||
+ (m_refineLevel && cuGeom.log2CUSize == (uint32_t)(g_log2Size[m_param->minCUSize] + 1))));
+ else
+ split = (m_param->scaleFactor && bDecidedDepth && (!mightNotSplit ||
+ (m_refineLevel && cuGeom.log2CUSize == (uint32_t)(g_log2Size[m_param->minCUSize] + 1))));
td.split = split;
if ((bDecidedDepth && mightNotSplit) || (m_param->bAnalysisType == HEVC_INFO && parentCTU.m_cuDepth[cuGeom.absPartIdx] == 4))
_______________________________________________
x265-devel mailing list
[email protected]
https://mailman.videolan.org/listinfo/x265-devel