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 <[email protected]> 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" <[email protected]> > 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 <[email protected]> wrote: > >> # HG changeset patch >> # User Min Chen <[email protected]> >> # 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 >> [email protected] >> https://mailman.videolan.org/listinfo/x265-devel >> > > > > -- > Deepthi Nandakumar > Engineering Manager, x265 > Multicoreware, Inc > > > _______________________________________________ > x265-devel mailing list > [email protected] > https://mailman.videolan.org/listinfo/x265-devel > >
_______________________________________________ x265-devel mailing list [email protected] https://mailman.videolan.org/listinfo/x265-devel
