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

Pradeep Ramachandran pradeep at multicorewareinc.com
Sat Dec 12 04:53:27 CET 2015


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/20151212/9aa065cb/attachment-0001.html>


More information about the x265-devel mailing list