<div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif">From a64a8603f8f5efb63be2e9c8d64dae02ab25acb4 Mon Sep 17 00:00:00 2001<br>From: AnusuyaKumarasamy <<a href="mailto:anusuya.kumarasamy@multicorewareinc.com">anusuya.kumarasamy@multicorewareinc.com</a>><br>Date: Thu, 14 Nov 2024 22:15:22 -0800<br>Subject: [PATCH] Decouple Abr-ladder and multiview flow<br><br>---<br> source/abrEncApp.cpp | 68 +++++++++++++++++++++++++-------------------<br> 1 file changed, 38 insertions(+), 30 deletions(-)<br><br>diff --git a/source/abrEncApp.cpp b/source/abrEncApp.cpp<br>index 1907e0bfb..66787ff11 100644<br>--- a/source/abrEncApp.cpp<br>+++ b/source/abrEncApp.cpp<br>@@ -78,10 +78,11 @@ namespace X265_NS {<br>     bool AbrEncoder::allocBuffers()<br>     {<br> #if ENABLE_MULTIVIEW<br>-        m_inputPicBuffer = X265_MALLOC(x265_picture**, MAX_VIEWS);<br>-#else<br>-        m_inputPicBuffer = X265_MALLOC(x265_picture**, m_numEncodes);<br>+        if(m_numInputViews > 1)<br>+            m_inputPicBuffer = X265_MALLOC(x265_picture**, MAX_VIEWS);<br>+        else<br> #endif<br>+            m_inputPicBuffer = X265_MALLOC(x265_picture**, m_numEncodes);<br>         m_analysisBuffer = X265_MALLOC(x265_analysis_data*, m_numEncodes);<br> <br>         m_picWriteCnt = new ThreadSafeInteger[m_numEncodes];<br>@@ -145,17 +146,42 @@ namespace X265_NS {<br>     {<br>         x265_cleanup(); /* Free library singletons */<br> #if ENABLE_MULTIVIEW<br>-        for (uint8_t pass = 0; pass < m_numInputViews; pass++)<br>+        if(m_numInputViews > 1)<br>         {<br>-            for (uint32_t index = 0; index < m_queueSize; index++)<br>+            for (uint8_t pass = 0; pass < m_numInputViews; pass++)<br>             {<br>-                X265_FREE(m_inputPicBuffer[pass][index]->planes[0]);<br>-                x265_picture_free(m_inputPicBuffer[pass][index]);<br>-            }<br>-            X265_FREE(m_inputPicBuffer[pass]);<br>+                for (uint32_t index = 0; index < m_queueSize; index++)<br>+                {<br>+                    X265_FREE(m_inputPicBuffer[pass][index]->planes[0]);<br>+                    x265_picture_free(m_inputPicBuffer[pass][index]);<br>+                }<br>+                X265_FREE(m_inputPicBuffer[pass]);<br> <br>-            if (pass == 0)<br>+                if (pass == 0)<br>+                {<br>+                    X265_FREE(m_analysisBuffer[pass]);<br>+                    X265_FREE(m_readFlag[pass]);<br>+                    delete[] m_picIdxReadCnt[pass];<br>+                    delete[] m_analysisWrite[pass];<br>+                    delete[] m_analysisRead[pass];<br>+                    m_passEnc[pass]->destroy();<br>+                    delete m_passEnc[pass];<br>+                }<br>+            }<br>+        }<br>+        else<br>+        {<br>+#endif<br>+            for (uint8_t pass = 0; pass < m_numEncodes; pass++)<br>             {<br>+                for (uint32_t index = 0; index < m_queueSize; index++)<br>+                {<br>+                    X265_FREE(m_inputPicBuffer[pass][index]->planes[0]);<br>+                    x265_picture_free(m_inputPicBuffer[pass][index]);<br>+                    X265_FREE(m_analysisBuffer[pass][index].wt);<br>+                }<br>+                X265_FREE(m_inputPicBuffer[pass]);<br>+<br>                 X265_FREE(m_analysisBuffer[pass]);<br>                 X265_FREE(m_readFlag[pass]);<br>                 delete[] m_picIdxReadCnt[pass];<br>@@ -164,25 +190,7 @@ namespace X265_NS {<br>                 m_passEnc[pass]->destroy();<br>                 delete m_passEnc[pass];<br>             }<br>-        }<br>-#else<br>-        for (uint8_t pass = 0; pass < m_numEncodes; pass++)<br>-        {<br>-            for (uint32_t index = 0; index < m_queueSize; index++)<br>-            {<br>-                X265_FREE(m_inputPicBuffer[pass][index]->planes[0]);<br>-                x265_picture_free(m_inputPicBuffer[pass][index]);<br>-                X265_FREE(m_analysisBuffer[pass][index].wt);<br>-            }<br>-            X265_FREE(m_inputPicBuffer[pass]);<br>-<br>-            X265_FREE(m_analysisBuffer[pass]);<br>-            X265_FREE(m_readFlag[pass]);<br>-            delete[] m_picIdxReadCnt[pass];<br>-            delete[] m_analysisWrite[pass];<br>-            delete[] m_analysisRead[pass];<br>-            m_passEnc[pass]->destroy();<br>-            delete m_passEnc[pass];<br>+#if ENABLE_MULTIVIEW<br>         }<br> #endif<br>         X265_FREE(m_inputPicBuffer);<br>@@ -1158,7 +1166,7 @@ ret:<br> <br>             for (int view = 0; view < m_parentEnc->m_param->numViews - !!m_parentEnc->m_param->format; view++)<br>             {<br>-                x265_picture* dest = m_parentEnc->m_parent->m_inputPicBuffer[view][writeIdx];<br>+                x265_picture* dest = (m_parentEnc->m_param->numViews > 1) ? m_parentEnc->m_parent->m_inputPicBuffer[view][writeIdx] : m_parentEnc->m_parent->m_inputPicBuffer[m_id][writeIdx];<br>                 src->format = m_parentEnc->m_param->format;<br>                 if (m_input[view]->readPicture(*src))<br>                 {<br>-- <br>2.36.0.windows.1<br><br></div></div>