[x265] [PATCH 1 of 2] Adding function applyWeight in MotionRefernce

Steve Borho steve at borho.org
Tue Oct 1 21:34:40 CEST 2013


On Tue, Oct 1, 2013 at 3:25 AM, <shazeb at multicorewareinc.com> wrote:

> # HG changeset patch
> # User Shazeb Nawaz Khan <shazeb at multicorewareinc.com>
> # Date 1380615387 -19800
> #      Tue Oct 01 13:46:27 2013 +0530
> # Node ID b8fa0fa81997e668ad983618c2ccf9d76d75f83c
> # Parent  051ccb452f2442ec9c054e2c8758df1843058bab
> Adding function applyWeight in MotionRefernce...
>
> to generate weighted full pel pixels for one or more rows
>

I would have pushed this one, but it won't build without the primitive
being finished


> diff -r 051ccb452f24 -r b8fa0fa81997 source/common/reference.cpp
> --- a/source/common/reference.cpp       Tue Oct 01 11:53:41 2013 +0530
> +++ b/source/common/reference.cpp       Tue Oct 01 13:46:27 2013 +0530
> @@ -62,6 +62,7 @@
>      m_startPad = pic->m_lumaMarginY * lumaStride + pic->m_lumaMarginX;
>      m_next = NULL;
>      isWeighted = false;
> +    m_numWeightedRows = 0;
>
>      if (w)
>      {
> @@ -69,7 +70,6 @@
>          int height = pic->getHeight();
>          size_t padwidth = width + pic->m_lumaMarginX * 2;
>          size_t padheight = height + pic->m_lumaMarginY * 2;
> -
>          setWeight(*w);
>          fpelPlane = (pixel*)X265_MALLOC(pixel,  padwidth * padheight);
>          if (fpelPlane) fpelPlane += m_startPad;
> @@ -88,3 +88,46 @@
>      if (isWeighted && fpelPlane)
>          X265_FREE(fpelPlane - m_startPad);
>  }
> +
> +void MotionReference::applyWeight(TComPic* ref, int rows, int numRows)
> +{
> +    TComPicYuv* pic = ref->getPicYuvRec();
> +    int marginX = pic->m_lumaMarginX;
> +    int marginY = pic->m_lumaMarginY;
> +    pixel* src = (pixel*) pic->getLumaAddr() + (m_numWeightedRows *
> (int)g_maxCUHeight * lumaStride);
> +    int width = pic->getWidth();
> +    int height = ((rows - m_numWeightedRows) * g_maxCUHeight);
> +    if (rows == numRows - 1)
> +        height = ((pic->getHeight() % g_maxCUHeight) ? (pic->getHeight()
> % g_maxCUHeight) : g_maxCUHeight);
> +    size_t dstStride = lumaStride;
> +
> +    // Computing weighted CU rows
> +    int shiftNum = IF_INTERNAL_PREC - X265_DEPTH;
> +    shift = shift + shiftNum;
> +    round = shift ? (1 << (shift - 1)) : 0;
> +    primitives.weightpUniPixel(src, fpelPlane, lumaStride, dstStride,
> width, height, weight, round, shift, offset);
> +
> +    // Extending Left & Right
> +    primitives.extendRowBorder(fpelPlane, dstStride, width, height,
> marginX);
> +
> +    // Extending Above
> +    if (m_numWeightedRows == 0)
> +    {
> +        pixel *pixY = fpelPlane - marginX;
> +        for (int y = 0; y < marginY; y++)
> +        {
> +            memcpy(pixY - (y + 1) * dstStride, pixY, dstStride *
> sizeof(pixel));
> +        }
> +    }
> +
> +    // Extending Bottom
> +    if (rows == (numRows - 1))
> +    {
> +        pixel *pixY = fpelPlane - marginX + (pic->getHeight() - 1) *
> dstStride;
> +        for (int y = 0; y < marginY; y++)
> +        {
> +            memcpy(pixY + (y + 1) * dstStride, pixY, dstStride *
> sizeof(pixel));
> +        }
> +    }
> +    m_numWeightedRows = rows;
> +}
> diff -r 051ccb452f24 -r b8fa0fa81997 source/common/reference.h
> --- a/source/common/reference.h Tue Oct 01 11:53:41 2013 +0530
> +++ b/source/common/reference.h Tue Oct 01 13:46:27 2013 +0530
> @@ -60,9 +60,11 @@
>      MotionReference();
>      ~MotionReference();
>      int  init(TComPicYuv*, wpScalingParam* w = NULL);
> +    void applyWeight(TComPic* src, int rows, int numRows);
>
>      MotionReference *m_next;
>      TComPicYuv      *m_reconPic;
> +    int              m_numWeightedRows;
>
>  protected:
>
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>



-- 
Steve Borho
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20131001/501d48aa/attachment.html>


More information about the x265-devel mailing list