<div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial"><div>The SAO and loop filter had been move into encode loop</div><div>Now, I trying to design logic sync system, it let us start next frame row early<br></div><div></div><div id="divNeteaseMailCard"></div><div><br></div>At 2015-12-12 11:53:27,"Pradeep Ramachandran" <pradeep@multicorewareinc.com> wrote:<br> <blockquote id="isReplyContent" style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;"><div dir="ltr">Can you elaborate more on your plans for improve frame parallelism? Do you plan to enable starting SAO and loop filter at a CTU-level instead of waiting for the entire row to be ready?</div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Pradeep Ramachandran, PhD<div>Solution Architect,</div><div><a href="http://pradeeprama.info/" target="_blank">pradeeprama.info/</a></div><div><a href="http://www.multicorewareinc.com/" target="_blank">www.multicorewareinc.com/</a></div><div>Ph: +91 99627 82018</div></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote">On Tue, Dec 8, 2015 at 10:57 PM, chen <span dir="ltr"><<a href="mailto:chenm003@163.com" target="_blank">chenm003@163.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;"><div style="color: rgb(0, 0, 0); line-height: 1.7; font-family: arial; font-size: 14px;"><div>Hello Deepthi,</div><div><br></div><div>Hope team are fine.</div><div><br></div><div>The next goal may improve Frame Parallelism performance, we can start CU early.</div><div><br></div><div>Thanks,</div><div>Min</div><div><div class="h5"><div><br></div>At 2015-12-08 18:33:09,"Deepthi Nandakumar" <<a href="mailto:deepthi@multicorewareinc.com" target="_blank">deepthi@multicorewareinc.com</a>> wrote:<br> <blockquote style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;"><div dir="ltr"><div><div>Min,<br><br></div>Thanks a lot for the series. I will test and queue them as soon as we regain access to test machines etc. <br><br></div>Sorry about the delay.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Dec 8, 2015 at 5:24 AM, Min Chen <span dir="ltr"><<a href="mailto:chenm003@163.com" target="_blank">chenm003@163.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;"># HG changeset patch<br>
# User Min Chen <<a href="mailto:chenm003@163.com" target="_blank">chenm003@163.com</a>><br>
# Date 1449511549 21600<br>
# Node ID 4f6b549198244291d25d6d2a0208e212960237c1<br>
# Parent b7ca5ebd7fcdcd4af0ef5ae567e88c04b7694e46<br>
Convert Deblock functions to statis<br>
---<br>
source/common/deblock.cpp | 16 ++++++++--------<br>
source/common/deblock.h | 16 ++++++++--------<br>
2 files changed, 16 insertions(+), 16 deletions(-)<br>
<br>
diff -r b7ca5ebd7fcd -r 4f6b54919824 source/common/deblock.cpp<br>
--- a/source/common/deblock.cpp Mon Dec 07 11:34:23 2015 -0600<br>
+++ b/source/common/deblock.cpp Mon Dec 07 12:05:49 2015 -0600<br>
@@ -34,7 +34,7 @@<br>
#define DEBLOCK_SMALLEST_BLOCK 8<br>
#define DEFAULT_INTRA_TC_OFFSET 2<br>
<br>
-void Deblock::deblockCTU(const CUData* ctu, const CUGeom& cuGeom, int32_t dir) const<br>
+void Deblock::deblockCTU(const CUData* ctu, const CUGeom& cuGeom, int32_t dir)<br>
{<br>
uint8_t blockStrength[MAX_NUM_PARTITIONS];<br>
<br>
@@ -69,7 +69,7 @@<br>
<br>
/* Deblocking filter process in CU-based (the same function as conventional's)<br>
* param Edge the direction of the edge in block boundary (horizonta/vertical), which is added newly */<br>
-void Deblock::deblockCU(const CUData* cu, const CUGeom& cuGeom, const int32_t dir, uint8_t blockStrength[]) const<br>
+void Deblock::deblockCU(const CUData* cu, const CUGeom& cuGeom, const int32_t dir, uint8_t blockStrength[])<br>
{<br>
uint32_t absPartIdx = cuGeom.absPartIdx;<br>
uint32_t depth = cuGeom.depth;<br>
@@ -124,7 +124,7 @@<br>
return g_rasterToZscan[g_zscanToRaster[absPartIdx] + baseUnitIdx * numUnits + edgeIdx];<br>
}<br>
<br>
-void Deblock::setEdgefilterMultiple(const CUData* cu, uint32_t scanIdx, int32_t dir, int32_t edgeIdx, uint8_t value, uint8_t blockStrength[], uint32_t numUnits) const<br>
+void Deblock::setEdgefilterMultiple(const CUData* cu, uint32_t scanIdx, int32_t dir, int32_t edgeIdx, uint8_t value, uint8_t blockStrength[], uint32_t numUnits)<br>
{<br>
X265_CHECK(numUnits > 0, "numUnits edge filter check\n");<br>
for (uint32_t i = 0; i < numUnits; i++)<br>
@@ -134,7 +134,7 @@<br>
}<br>
}<br>
<br>
-void Deblock::setEdgefilterTU(const CUData* cu, uint32_t absPartIdx, uint32_t tuDepth, int32_t dir, uint8_t blockStrength[]) const<br>
+void Deblock::setEdgefilterTU(const CUData* cu, uint32_t absPartIdx, uint32_t tuDepth, int32_t dir, uint8_t blockStrength[])<br>
{<br>
uint32_t log2TrSize = cu->m_log2CUSize[absPartIdx] - tuDepth;<br>
if (cu->m_tuDepth[absPartIdx] > tuDepth)<br>
@@ -149,7 +149,7 @@<br>
setEdgefilterMultiple(cu, absPartIdx, dir, 0, 2, blockStrength, numUnits);<br>
}<br>
<br>
-void Deblock::setEdgefilterPU(const CUData* cu, uint32_t absPartIdx, int32_t dir, uint8_t blockStrength[], uint32_t numUnits) const<br>
+void Deblock::setEdgefilterPU(const CUData* cu, uint32_t absPartIdx, int32_t dir, uint8_t blockStrength[], uint32_t numUnits)<br>
{<br>
const uint32_t hNumUnits = numUnits >> 1;<br>
const uint32_t qNumUnits = numUnits >> 2;<br>
@@ -190,7 +190,7 @@<br>
}<br>
}<br>
<br>
-uint8_t Deblock::getBoundaryStrength(const CUData* cuQ, int32_t dir, uint32_t partQ, const uint8_t blockStrength[]) const<br>
+uint8_t Deblock::getBoundaryStrength(const CUData* cuQ, int32_t dir, uint32_t partQ, const uint8_t blockStrength[])<br>
{<br>
// Calculate block index<br>
uint32_t partP;<br>
@@ -340,7 +340,7 @@<br>
}<br>
}<br>
<br>
-void Deblock::edgeFilterLuma(const CUData* cuQ, uint32_t absPartIdx, uint32_t depth, int32_t dir, int32_t edge, const uint8_t blockStrength[]) const<br>
+void Deblock::edgeFilterLuma(const CUData* cuQ, uint32_t absPartIdx, uint32_t depth, int32_t dir, int32_t edge, const uint8_t blockStrength[])<br>
{<br>
PicYuv* reconPic = cuQ->m_encData->m_reconPic;<br>
pixel* src = reconPic->getLumaAddr(cuQ->m_cuAddr, absPartIdx);<br>
@@ -440,7 +440,7 @@<br>
}<br>
}<br>
<br>
-void Deblock::edgeFilterChroma(const CUData* cuQ, uint32_t absPartIdx, uint32_t depth, int32_t dir, int32_t edge, const uint8_t blockStrength[]) const<br>
+void Deblock::edgeFilterChroma(const CUData* cuQ, uint32_t absPartIdx, uint32_t depth, int32_t dir, int32_t edge, const uint8_t blockStrength[])<br>
{<br>
int32_t chFmt = cuQ->m_chromaFormat, chromaShift;<br>
intptr_t offset, srcStep;<br>
diff -r b7ca5ebd7fcd -r 4f6b54919824 source/common/deblock.h<br>
--- a/source/common/deblock.h Mon Dec 07 11:34:23 2015 -0600<br>
+++ b/source/common/deblock.h Mon Dec 07 12:05:49 2015 -0600<br>
@@ -38,24 +38,24 @@<br>
public:<br>
enum { EDGE_VER, EDGE_HOR };<br>
<br>
- void deblockCTU(const CUData* ctu, const CUGeom& cuGeom, int32_t dir) const;<br>
+ static void deblockCTU(const CUData* ctu, const CUGeom& cuGeom, int32_t dir);<br>
<br>
protected:<br>
<br>
// CU-level deblocking function<br>
- void deblockCU(const CUData* cu, const CUGeom& cuGeom, const int32_t dir, uint8_t blockStrength[]) const;<br>
+ static void deblockCU(const CUData* cu, const CUGeom& cuGeom, const int32_t dir, uint8_t blockStrength[]);<br>
<br>
// set filtering functions<br>
- void setEdgefilterTU(const CUData* cu, uint32_t absPartIdx, uint32_t tuDepth, int32_t dir, uint8_t blockStrength[]) const;<br>
- void setEdgefilterPU(const CUData* cu, uint32_t absPartIdx, int32_t dir, uint8_t blockStrength[], uint32_t numUnits) const;<br>
- void setEdgefilterMultiple(const CUData* cu, uint32_t absPartIdx, int32_t dir, int32_t edgeIdx, uint8_t value, uint8_t blockStrength[], uint32_t numUnits) const;<br>
+ static void setEdgefilterTU(const CUData* cu, uint32_t absPartIdx, uint32_t tuDepth, int32_t dir, uint8_t blockStrength[]);<br>
+ static void setEdgefilterPU(const CUData* cu, uint32_t absPartIdx, int32_t dir, uint8_t blockStrength[], uint32_t numUnits);<br>
+ static void setEdgefilterMultiple(const CUData* cu, uint32_t absPartIdx, int32_t dir, int32_t edgeIdx, uint8_t value, uint8_t blockStrength[], uint32_t numUnits);<br>
<br>
// get filtering functions<br>
- uint8_t getBoundaryStrength(const CUData* cuQ, int32_t dir, uint32_t partQ, const uint8_t blockStrength[]) const;<br>
+ static uint8_t getBoundaryStrength(const CUData* cuQ, int32_t dir, uint32_t partQ, const uint8_t blockStrength[]);<br>
<br>
// filter luma/chroma functions<br>
- void edgeFilterLuma(const CUData* cuQ, uint32_t absPartIdx, uint32_t depth, int32_t dir, int32_t edge, const uint8_t blockStrength[]) const;<br>
- void edgeFilterChroma(const CUData* cuQ, uint32_t absPartIdx, uint32_t depth, int32_t dir, int32_t edge, const uint8_t blockStrength[]) const;<br>
+ static void edgeFilterLuma(const CUData* cuQ, uint32_t absPartIdx, uint32_t depth, int32_t dir, int32_t edge, const uint8_t blockStrength[]);<br>
+ static void edgeFilterChroma(const CUData* cuQ, uint32_t absPartIdx, uint32_t depth, int32_t dir, int32_t edge, const uint8_t blockStrength[]);<br>
<br>
static const uint8_t s_tcTable[54];<br>
static const uint8_t s_betaTable[52];<br>
<br>
_______________________________________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org" target="_blank">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" target="_blank" rel="noreferrer">https://mailman.videolan.org/listinfo/x265-devel</a><br>
</blockquote></div><br><br clear="all"><br>-- <br><div><div dir="ltr"><div><div>Deepthi Nandakumar<br></div>Engineering Manager, x265<br></div>Multicoreware, Inc<br></div></div>
</div>
</blockquote></div></div></div><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" rel="noreferrer">https://mailman.videolan.org/listinfo/x265-devel</a><br>
<br></blockquote></div><br></div>
</blockquote></div>