[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