[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