<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Oct 16, 2013 at 12:55 PM,  <span dir="ltr"><<a href="mailto:aarthi@multicorewareinc.com" target="_blank">aarthi@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 Aarthi Thirumalai<<a href="mailto:aarthi@multicorewareinc.com">aarthi@multicorewareinc.com</a>><br>
# Date 1381945688 -19800<br>
#      Wed Oct 16 23:18:08 2013 +0530<br>
# Node ID 46cdbe43d903c23169593f70c28b5d32d8f397e9<br>
# Parent  4b1716b232e56399cdc11abf5abb3c0b37d1c9ee<br>
TComPic: add m_qpAqOffset to store qp offsets per CU when Aq is enabled<br>
<br>
diff -r 4b1716b232e5 -r 46cdbe43d903 source/Lib/TLibCommon/TComPic.cpp<br>
--- a/source/Lib/TLibCommon/TComPic.cpp Wed Oct 16 02:35:57 2013 -0500<br>
+++ b/source/Lib/TLibCommon/TComPic.cpp Wed Oct 16 23:18:08 2013 +0530<br>
@@ -61,6 +61,7 @@<br>
     memset(&m_lowres, 0, sizeof(m_lowres));<br>
     m_next = NULL;<br>
     m_prev = NULL;<br>
+    m_qpAqOffset = NULL;<br>
     m_SSDY = 0;<br>
     m_SSDU = 0;<br>
     m_SSDV = 0;<br>
@@ -114,6 +115,7 @@<br>
     }<br>
<br>
     m_lowres.destroy(bframes);<br>
+    X265_FREE(m_qpAqOffset);<br>
 }<br>
<br>
 //! \}<br>
diff -r 4b1716b232e5 -r 46cdbe43d903 source/Lib/TLibCommon/TComPic.h<br>
--- a/source/Lib/TLibCommon/TComPic.h   Wed Oct 16 02:35:57 2013 -0500<br>
+++ b/source/Lib/TLibCommon/TComPic.h   Wed Oct 16 23:18:08 2013 +0530<br>
@@ -84,7 +84,7 @@<br>
<br>
     TComPic*              m_next;<br>
     TComPic*              m_prev;<br>
-<br>
+    double*               m_qpAqOffset;         // store qp offsets for AQ<br>
     UInt64                m_SSDY;<br>
     UInt64                m_SSDU;<br>
     UInt64                m_SSDV;<br>
diff -r 4b1716b232e5 -r 46cdbe43d903 source/encoder/encoder.cpp<br>
--- a/source/encoder/encoder.cpp        Wed Oct 16 02:35:57 2013 -0500<br>
+++ b/source/encoder/encoder.cpp        Wed Oct 16 23:18:08 2013 +0530<br>
@@ -174,6 +174,11 @@<br>
                 // NOTE: the SAO pointer from m_frameEncoder for read m_maxSplitLevel, etc, we can remove it later<br>
                 pic->getPicSym()->allocSaoParam(m_frameEncoder->getSAO());<br>
             }<br>
+<br>
+            if (param.rc.aqMode)<br>
+            {<br>
+                CHECKED_MALLOC(pic->m_qpAqOffset, double, pic->getPicSym()->getNumberOfCUsInFrame());<br>
+            }<br></blockquote><div><br></div><div>Using CHECKED_MALLOC here is a misfeature; a malloc failure would cause the encoder to deadlock.  it's better to use a simple x265_malloc() here and check for malloc failures downstream, or disable aqMode here if it failed.</div>
<div><br></div><div>It would probably be simpler to move this malloc to TComPic init; where most of the mallocs happen and where failure could be more cleanly dealt with.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

         }<br>
         else<br>
             pic = m_freeList.popBack();<br>
@@ -277,6 +282,8 @@<br>
     }<br>
<br>
     return ret;<br>
+fail:<br>
+    return 0;<br>
 }<br>
<br>
 double Encoder::printSummary()<br>
_______________________________________________<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" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Steve Borho
</div></div>