<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>