[x265] [PATCH 01 of 24] Convert Deblock functions to statis

chen chenm003 at 163.com
Mon Dec 14 16:46:29 CET 2015


The SAO and loop filter had been move into encode loop
Now, I trying to design logic sync system, it let us start next frame row early



At 2015-12-12 11:53:27,"Pradeep Ramachandran" <pradeep at multicorewareinc.com> wrote:

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?


Pradeep Ramachandran, PhD
Solution Architect,
pradeeprama.info/
www.multicorewareinc.com/
Ph:   +91 99627 82018


On Tue, Dec 8, 2015 at 10:57 PM, chen <chenm003 at 163.com> wrote:

Hello Deepthi,


Hope team are fine.


The next goal may improve Frame Parallelism performance, we can start CU early.


Thanks,
Min


At 2015-12-08 18:33:09,"Deepthi Nandakumar" <deepthi at multicorewareinc.com> wrote:

Min,


Thanks a lot for the series. I will test and queue them as soon as we regain access to test machines etc.


Sorry about the delay.



On Tue, Dec 8, 2015 at 5:24 AM, Min Chen <chenm003 at 163.com> wrote:
# HG changeset patch
# User Min Chen <chenm003 at 163.com>
# Date 1449511549 21600
# Node ID 4f6b549198244291d25d6d2a0208e212960237c1
# Parent  b7ca5ebd7fcdcd4af0ef5ae567e88c04b7694e46
Convert Deblock functions to statis
---
 source/common/deblock.cpp |   16 ++++++++--------
 source/common/deblock.h   |   16 ++++++++--------
 2 files changed, 16 insertions(+), 16 deletions(-)

diff -r b7ca5ebd7fcd -r 4f6b54919824 source/common/deblock.cpp
--- a/source/common/deblock.cpp Mon Dec 07 11:34:23 2015 -0600
+++ b/source/common/deblock.cpp Mon Dec 07 12:05:49 2015 -0600
@@ -34,7 +34,7 @@
 #define DEBLOCK_SMALLEST_BLOCK  8
 #define DEFAULT_INTRA_TC_OFFSET 2

-void Deblock::deblockCTU(const CUData* ctu, const CUGeom& cuGeom, int32_t dir) const
+void Deblock::deblockCTU(const CUData* ctu, const CUGeom& cuGeom, int32_t dir)
 {
     uint8_t blockStrength[MAX_NUM_PARTITIONS];

@@ -69,7 +69,7 @@

 /* Deblocking filter process in CU-based (the same function as conventional's)
  * param Edge the direction of the edge in block boundary (horizonta/vertical), which is added newly */
-void Deblock::deblockCU(const CUData* cu, const CUGeom& cuGeom, const int32_t dir, uint8_t blockStrength[]) const
+void Deblock::deblockCU(const CUData* cu, const CUGeom& cuGeom, const int32_t dir, uint8_t blockStrength[])
 {
     uint32_t absPartIdx = cuGeom.absPartIdx;
     uint32_t depth = cuGeom.depth;
@@ -124,7 +124,7 @@
         return g_rasterToZscan[g_zscanToRaster[absPartIdx] + baseUnitIdx * numUnits + edgeIdx];
 }

-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
+void Deblock::setEdgefilterMultiple(const CUData* cu, uint32_t scanIdx, int32_t dir, int32_t edgeIdx, uint8_t value, uint8_t blockStrength[], uint32_t numUnits)
 {
     X265_CHECK(numUnits > 0, "numUnits edge filter check\n");
     for (uint32_t i = 0; i < numUnits; i++)
@@ -134,7 +134,7 @@
     }
 }

-void Deblock::setEdgefilterTU(const CUData* cu, uint32_t absPartIdx, uint32_t tuDepth, int32_t dir, uint8_t blockStrength[]) const
+void Deblock::setEdgefilterTU(const CUData* cu, uint32_t absPartIdx, uint32_t tuDepth, int32_t dir, uint8_t blockStrength[])
 {
     uint32_t log2TrSize = cu->m_log2CUSize[absPartIdx] - tuDepth;
     if (cu->m_tuDepth[absPartIdx] > tuDepth)
@@ -149,7 +149,7 @@
     setEdgefilterMultiple(cu, absPartIdx, dir, 0, 2, blockStrength, numUnits);
 }

-void Deblock::setEdgefilterPU(const CUData* cu, uint32_t absPartIdx, int32_t dir, uint8_t blockStrength[], uint32_t numUnits) const
+void Deblock::setEdgefilterPU(const CUData* cu, uint32_t absPartIdx, int32_t dir, uint8_t blockStrength[], uint32_t numUnits)
 {
     const uint32_t hNumUnits = numUnits >> 1;
     const uint32_t qNumUnits = numUnits >> 2;
@@ -190,7 +190,7 @@
     }
 }

-uint8_t Deblock::getBoundaryStrength(const CUData* cuQ, int32_t dir, uint32_t partQ, const uint8_t blockStrength[]) const
+uint8_t Deblock::getBoundaryStrength(const CUData* cuQ, int32_t dir, uint32_t partQ, const uint8_t blockStrength[])
 {
     // Calculate block index
     uint32_t partP;
@@ -340,7 +340,7 @@
     }
 }

-void Deblock::edgeFilterLuma(const CUData* cuQ, uint32_t absPartIdx, uint32_t depth, int32_t dir, int32_t edge, const uint8_t blockStrength[]) const
+void Deblock::edgeFilterLuma(const CUData* cuQ, uint32_t absPartIdx, uint32_t depth, int32_t dir, int32_t edge, const uint8_t blockStrength[])
 {
     PicYuv* reconPic = cuQ->m_encData->m_reconPic;
     pixel* src = reconPic->getLumaAddr(cuQ->m_cuAddr, absPartIdx);
@@ -440,7 +440,7 @@
     }
 }

-void Deblock::edgeFilterChroma(const CUData* cuQ, uint32_t absPartIdx, uint32_t depth, int32_t dir, int32_t edge, const uint8_t blockStrength[]) const
+void Deblock::edgeFilterChroma(const CUData* cuQ, uint32_t absPartIdx, uint32_t depth, int32_t dir, int32_t edge, const uint8_t blockStrength[])
 {
     int32_t chFmt = cuQ->m_chromaFormat, chromaShift;
     intptr_t offset, srcStep;
diff -r b7ca5ebd7fcd -r 4f6b54919824 source/common/deblock.h
--- a/source/common/deblock.h   Mon Dec 07 11:34:23 2015 -0600
+++ b/source/common/deblock.h   Mon Dec 07 12:05:49 2015 -0600
@@ -38,24 +38,24 @@
 public:
     enum { EDGE_VER, EDGE_HOR };

-    void deblockCTU(const CUData* ctu, const CUGeom& cuGeom, int32_t dir) const;
+    static void deblockCTU(const CUData* ctu, const CUGeom& cuGeom, int32_t dir);

 protected:

     // CU-level deblocking function
-    void deblockCU(const CUData* cu, const CUGeom& cuGeom, const int32_t dir, uint8_t blockStrength[]) const;
+    static void deblockCU(const CUData* cu, const CUGeom& cuGeom, const int32_t dir, uint8_t blockStrength[]);

     // set filtering functions
-    void setEdgefilterTU(const CUData* cu, uint32_t absPartIdx, uint32_t tuDepth, int32_t dir, uint8_t blockStrength[]) const;
-    void setEdgefilterPU(const CUData* cu, uint32_t absPartIdx, int32_t dir, uint8_t blockStrength[], uint32_t numUnits) const;
-    void setEdgefilterMultiple(const CUData* cu, uint32_t absPartIdx, int32_t dir, int32_t edgeIdx, uint8_t value, uint8_t blockStrength[], uint32_t numUnits) const;
+    static void setEdgefilterTU(const CUData* cu, uint32_t absPartIdx, uint32_t tuDepth, int32_t dir, uint8_t blockStrength[]);
+    static void setEdgefilterPU(const CUData* cu, uint32_t absPartIdx, int32_t dir, uint8_t blockStrength[], uint32_t numUnits);
+    static void setEdgefilterMultiple(const CUData* cu, uint32_t absPartIdx, int32_t dir, int32_t edgeIdx, uint8_t value, uint8_t blockStrength[], uint32_t numUnits);

     // get filtering functions
-    uint8_t getBoundaryStrength(const CUData* cuQ, int32_t dir, uint32_t partQ, const uint8_t blockStrength[]) const;
+    static uint8_t getBoundaryStrength(const CUData* cuQ, int32_t dir, uint32_t partQ, const uint8_t blockStrength[]);

     // filter luma/chroma functions
-    void edgeFilterLuma(const CUData* cuQ, uint32_t absPartIdx, uint32_t depth, int32_t dir, int32_t edge, const uint8_t blockStrength[]) const;
-    void edgeFilterChroma(const CUData* cuQ, uint32_t absPartIdx, uint32_t depth, int32_t dir, int32_t edge, const uint8_t blockStrength[]) const;
+    static void edgeFilterLuma(const CUData* cuQ, uint32_t absPartIdx, uint32_t depth, int32_t dir, int32_t edge, const uint8_t blockStrength[]);
+    static void edgeFilterChroma(const CUData* cuQ, uint32_t absPartIdx, uint32_t depth, int32_t dir, int32_t edge, const uint8_t blockStrength[]);

     static const uint8_t s_tcTable[54];
     static const uint8_t s_betaTable[52];

_______________________________________________
x265-devel mailing list
x265-devel at videolan.org
https://mailman.videolan.org/listinfo/x265-devel




--

Deepthi Nandakumar

Engineering Manager, x265

Multicoreware, Inc


_______________________________________________
x265-devel mailing list
x265-devel at videolan.org
https://mailman.videolan.org/listinfo/x265-devel



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20151214/35b0f4fc/attachment.html>


More information about the x265-devel mailing list