[x265] [PATCH] lookahead: fix crash for I frame cost estimation

Deepthi Nandakumar deepthi at multicorewareinc.com
Thu Sep 19 11:41:36 CEST 2013


Can you try sending this as a fresh patch to the mailing list? Does not
apply cleanly to the parent node.


On Thu, Sep 19, 2013 at 2:46 PM, Deepthi Devaki Akkoorath <
deepthidevaki at multicorewareinc.com> wrote:

> # HG changeset patch
> # User Deepthi Devaki <deepthidevaki at multicorewareinc.com>
> # Date 1379582068 -19800
> # Node ID d52de033d7dde002bbbb55e9d55ece138c33fd61
> # Parent  26d6f155f8df69147f40f4945d99c29a52988c56
> lookahead: fix crash for I frame cost estimation
>
> diff -r 26d6f155f8df -r d52de033d7dd source/encoder/slicetype.cpp
> --- a/source/encoder/slicetype.cpp Wed Sep 18 16:13:33 2013 -0500
> +++ b/source/encoder/slicetype.cpp Thu Sep 19 14:44:28 2013 +0530
> @@ -360,44 +360,46 @@
>      mvmax.x = (uint16_t)((widthInCU - cux - 1) * cuSize + 8);
>      mvmax.y = (uint16_t)((heightInCU - cuy - 1) * cuSize + 8);
>
> -    for (int i = 0; i < 1 + bBidir; i++)
> +    if (p0 != p1)
>      {
> -        if (!bDoSearch[i])
> +        for (int i = 0; i < 1 + bBidir; i++)
>          {
> -            /* Use previously calculated cost */
> +            if (!bDoSearch[i])
> +            {
> +                /* Use previously calculated cost */
> +                COPY2_IF_LT(bcost, *fenc_costs[i], listused, i + 1);
> +                continue;
> +            }
> +            int numc = 0;
> +            MV mvc[4], mvp;
> +            MV *fenc_mv = fenc_mvs[i];
> +
> +            /* Reverse-order MV prediction. */
> +            mvc[0] = 0;
> +            mvc[2] = 0;
> +#define MVC(mv) mvc[numc++] = mv;
> +            if (cux < widthInCU - 1)
> +                MVC(fenc_mv[1]);
> +            if (cuy < heightInCU - 1)
> +            {
> +                MVC(fenc_mv[widthInCU]);
> +                if (cux > 0)
> +                    MVC(fenc_mv[widthInCU - 1]);
> +                if (cux < widthInCU - 1)
> +                    MVC(fenc_mv[widthInCU + 1]);
> +            }
> +#undef MVC
> +            if (numc <= 1)
> +                mvp = mvc[0];
> +            else
> +            {
> +                x265_median_mv(mvp, mvc[0], mvc[1], mvc[2]);
> +            }
> +
> +            *fenc_costs[i] = me.motionEstimate(i ? fref1 : fref0, mvmin,
> mvmax, mvp, numc, mvc, merange, *fenc_mvs[i]);
>              COPY2_IF_LT(bcost, *fenc_costs[i], listused, i + 1);
> -            continue;
>          }
> -        int numc = 0;
> -        MV mvc[4], mvp;
> -        MV *fenc_mv = fenc_mvs[i];
> -
> -        /* Reverse-order MV prediction. */
> -        mvc[0] = 0;
> -        mvc[2] = 0;
> -#define MVC(mv) mvc[numc++] = mv;
> -        if (cux < widthInCU - 1)
> -            MVC(fenc_mv[1]);
> -        if (cuy < heightInCU - 1)
> -        {
> -            MVC(fenc_mv[widthInCU]);
> -            if (cux > 0)
> -                MVC(fenc_mv[widthInCU - 1]);
> -            if (cux < widthInCU - 1)
> -                MVC(fenc_mv[widthInCU + 1]);
> -        }
> -#undef MVC
> -        if (numc <= 1)
> -            mvp = mvc[0];
> -        else
> -        {
> -            x265_median_mv(mvp, mvc[0], mvc[1], mvc[2]);
> -        }
> -
> -        *fenc_costs[i] = me.motionEstimate(i ? fref1 : fref0, mvmin,
> mvmax, mvp, numc, mvc, merange, *fenc_mvs[i]);
> -        COPY2_IF_LT(bcost, *fenc_costs[i], listused, i + 1);
>      }
> -
>      if (!fenc->bIntraCalculated)
>      {
>          int nLog2SizeMinus2 = g_convertToBit[cuSize]; // partition size
>
>
> _______________________________________________
> 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/20130919/f75c4cd6/attachment.html>


More information about the x265-devel mailing list