<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, May 29, 2018 at 7:23 PM, <span dir="ltr"><<a href="mailto:bhavna@multicorewareinc.com" target="_blank">bhavna@multicorewareinc.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"># HG changeset patch<br>
# User Bhavna Hariharan <<a href="mailto:bhavna@multicorewareinc.com">bhavna@multicorewareinc.com</a>><br>
# Date 1527578404 -19800<br>
# Tue May 29 12:50:04 2018 +0530<br>
# Node ID 9db5be89d74cc55cd6aff30c2a5761<wbr>19ca09d8a1<br>
# Parent 9389296cd844bf14850b98ee181772<wbr>be94d209b9<br>
bug fix: allow split in frame boundary for scaled encodes.<br>
<br>
For cases where the entire CTU is not within the frame boundary, the CU must be<br>
allowed to split when the depth from the save encode is not applicable.<br>
<br>
diff -r 9389296cd844 -r 9db5be89d74c source/encoder/analysis.cpp<br>
--- a/source/encoder/analysis.cpp Mon May 28 14:55:57 2018 +0530<br>
+++ b/source/encoder/analysis.cpp Tue May 29 12:50:04 2018 +0530<br>
@@ -523,14 +523,15 @@<br>
int split = 0;<br>
if (m_param->intraRefine && m_param->intraRefine != 4)<br>
{<br>
- split = m_param->scaleFactor && ((cuGeom.log2CUSize == (uint32_t)(g_log2Size[m_param-<wbr>>minCUSize] + 1)) && bDecidedDepth);<br>
+ split = m_param->scaleFactor && bDecidedDepth && (!mightNotSplit || <br>
+ ((cuGeom.log2CUSize == (uint32_t)(g_log2Size[m_param-<wbr>>minCUSize] + 1))));<br>
if (cuGeom.log2CUSize == (uint32_t)(g_log2Size[m_param-<wbr>>minCUSize]) && !bDecidedDepth)<br>
bAlreadyDecided = false;<br>
}<br>
<br>
if (bAlreadyDecided)<br>
{<br>
- if (bDecidedDepth)<br>
+ if (bDecidedDepth && mightNotSplit)<br>
{<br>
Mode& mode = md.pred[0];<br>
md.bestMode = &mode;<br>
@@ -2420,10 +2421,11 @@<br>
m_refineLevel = m_param->interRefine;<br>
else<br>
m_refineLevel = m_frame->m_classifyFrame ? 1 : 3;<br>
- int split = (m_param->scaleFactor && m_refineLevel && cuGeom.log2CUSize == (uint32_t)(g_log2Size[m_param-<wbr>>minCUSize] + 1) && bDecidedDepth);<br>
+ int split = (m_param->scaleFactor && bDecidedDepth && (!mightNotSplit || <br>
+ (m_refineLevel && cuGeom.log2CUSize == (uint32_t)(g_log2Size[m_param-<wbr>>minCUSize] + 1))));<br>
td.split = split;<br>
<br>
- if (bDecidedDepth)<br>
+ if (bDecidedDepth && mightNotSplit)<br>
{<br>
setLambdaFromQP(parentCTU, qp, lqp);<br>
<br>
<br>______________________________<wbr>_________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" rel="noreferrer" target="_blank">https://mailman.videolan.org/<wbr>listinfo/x265-devel</a><br>
<br></blockquote></div><br></div><div class="gmail_extra">Pushed.</div></div>