<div dir="ltr"><div>Thanks, verified and pushed. Do you mind including some more information on this option to the docs? This only affects intra decisions in inter-slices, I think? <br><br></div>Deepthi <br></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Tue, Apr 15, 2014 at 10:16 AM, Satoshi Nakagawa <span dir="ltr"><<a href="mailto:nakagawa424@oki.com" target="_blank">nakagawa424@oki.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="">> Was it generating hash mistakes without these fixes?<br>
<br>
</div>Yes, when encoding with --constraind-intra option.<br>
<div class="HOEnZb"><div class="h5"><br>
> -----Original Message-----<br>
> From: x265-devel [mailto:<a href="mailto:x265-devel-bounces@videolan.org">x265-devel-bounces@videolan.org</a>] On Behalf Of<br>
> Steve Borho<br>
> Sent: Tuesday, April 15, 2014 1:29 PM<br>
> To: Development for x265<br>
> Subject: Re: [x265] fix: constrained intra<br>
><br>
> On Mon, Apr 14, 2014 at 10:36 PM, Satoshi Nakagawa <<a href="mailto:nakagawa424@oki.com">nakagawa424@oki.com</a>><br>
> wrote:<br>
> > # HG changeset patch<br>
> > # User Satoshi Nakagawa <<a href="mailto:nakagawa424@oki.com">nakagawa424@oki.com</a>> # Date 1397532876 -32400<br>
> > #      Tue Apr 15 12:34:36 2014 +0900<br>
> > # Node ID 5dde9f4817813e96116df5b86925fa3fc5eff2a8<br>
> > # Parent  08d64a70594ed31cd80046bd4a7e9fa52119be47<br>
> > fix: constrained intra<br>
><br>
> Was it generating hash mistakes without these fixes?<br>
><br>
> ><br>
> > diff -r 08d64a70594e -r 5dde9f481781<br>
> source/Lib/TLibCommon/TComPattern.cpp<br>
> > --- a/source/Lib/TLibCommon/TComPattern.cpp     Mon Apr 14 13:18:18<br>
> 2014 -0500<br>
> > +++ b/source/Lib/TLibCommon/TComPattern.cpp     Tue Apr 15 12:34:36<br>
> 2014 +0900<br>
> > @@ -79,12 +79,24 @@<br>
> >      int  leftUnits       = cuHeightInUnits << 1;<br>
> >      partIdxLB            =<br>
> g_rasterToZscan[g_zscanToRaster[partIdxLT] + ((cuHeightInUnits - 1) *<br>
> partIdxStride)];<br>
> ><br>
> > -    bNeighborFlags[leftUnits] = isAboveLeftAvailable(cu, partIdxLT);<br>
> > -    numIntraNeighbor += (int)(bNeighborFlags[leftUnits]);<br>
> > -    numIntraNeighbor += isAboveAvailable(cu, partIdxLT, partIdxRT,<br>
> (bNeighborFlags + leftUnits + 1));<br>
> > -    numIntraNeighbor += isAboveRightAvailable(cu, partIdxLT, partIdxRT,<br>
> (bNeighborFlags + leftUnits + 1 + cuWidthInUnits));<br>
> > -    numIntraNeighbor += isLeftAvailable(cu, partIdxLT, partIdxLB,<br>
> (bNeighborFlags + leftUnits - 1));<br>
> > -    numIntraNeighbor += isBelowLeftAvailable(cu, partIdxLT, partIdxLB,<br>
> (bNeighborFlags + leftUnits   - 1 - cuHeightInUnits));<br>
> > +    if (!cu->getSlice()->getPPS()->getConstrainedIntraPred())<br>
> > +    {<br>
> > +        bNeighborFlags[leftUnits] = isAboveLeftAvailable(cu,<br>
> partIdxLT);<br>
> > +        numIntraNeighbor += (int)(bNeighborFlags[leftUnits]);<br>
> > +        numIntraNeighbor += isAboveAvailable(cu, partIdxLT, partIdxRT,<br>
> (bNeighborFlags + leftUnits + 1));<br>
> > +        numIntraNeighbor += isAboveRightAvailable(cu, partIdxLT,<br>
> partIdxRT, (bNeighborFlags + leftUnits + 1 + cuWidthInUnits));<br>
> > +        numIntraNeighbor += isLeftAvailable(cu, partIdxLT, partIdxLB,<br>
> (bNeighborFlags + leftUnits - 1));<br>
> > +        numIntraNeighbor += isBelowLeftAvailable(cu, partIdxLT,<br>
> partIdxLB, (bNeighborFlags + leftUnits   - 1 - cuHeightInUnits));<br>
> > +    }<br>
> > +    else<br>
> > +    {<br>
> > +        bNeighborFlags[leftUnits] = isAboveLeftAvailableCIP(cu,<br>
> partIdxLT);<br>
> > +        numIntraNeighbor += (int)(bNeighborFlags[leftUnits]);<br>
> > +        numIntraNeighbor += isAboveAvailableCIP(cu, partIdxLT,<br>
> partIdxRT, (bNeighborFlags + leftUnits + 1));<br>
> > +        numIntraNeighbor += isAboveRightAvailableCIP(cu, partIdxLT,<br>
> partIdxRT, (bNeighborFlags + leftUnits + 1 + cuWidthInUnits));<br>
> > +        numIntraNeighbor += isLeftAvailableCIP(cu, partIdxLT,<br>
> partIdxLB, (bNeighborFlags + leftUnits - 1));<br>
> > +        numIntraNeighbor += isBelowLeftAvailableCIP(cu, partIdxLT,<br>
> partIdxLB, (bNeighborFlags + leftUnits   - 1 - cuHeightInUnits));<br>
> > +    }<br>
> ><br>
> >      width = cuWidth2 + 1;<br>
> >      height = cuHeight2 + 1;<br>
> > @@ -238,12 +250,24 @@<br>
> >      int  leftUnits       = cuHeightInUnits << 1;<br>
> >      partIdxLB            =<br>
> g_rasterToZscan[g_zscanToRaster[partIdxLT] + ((cuHeightInUnits - 1) *<br>
> partIdxStride)];<br>
> ><br>
> > -    bNeighborFlags[leftUnits] = isAboveLeftAvailable(cu, partIdxLT);<br>
> > -    numIntraNeighbor += (int)(bNeighborFlags[leftUnits]);<br>
> > -    numIntraNeighbor += isAboveAvailable(cu, partIdxLT, partIdxRT,<br>
> (bNeighborFlags + leftUnits + 1));<br>
> > -    numIntraNeighbor += isAboveRightAvailable(cu, partIdxLT, partIdxRT,<br>
> (bNeighborFlags + leftUnits + 1 + cuWidthInUnits));<br>
> > -    numIntraNeighbor += isLeftAvailable(cu, partIdxLT, partIdxLB,<br>
> (bNeighborFlags + leftUnits - 1));<br>
> > -    numIntraNeighbor += isBelowLeftAvailable(cu, partIdxLT, partIdxLB,<br>
> (bNeighborFlags + leftUnits   - 1 - cuHeightInUnits));<br>
> > +    if (!cu->getSlice()->getPPS()->getConstrainedIntraPred())<br>
> > +    {<br>
> > +        bNeighborFlags[leftUnits] = isAboveLeftAvailable(cu,<br>
> partIdxLT);<br>
> > +        numIntraNeighbor += (int)(bNeighborFlags[leftUnits]);<br>
> > +        numIntraNeighbor += isAboveAvailable(cu, partIdxLT, partIdxRT,<br>
> (bNeighborFlags + leftUnits + 1));<br>
> > +        numIntraNeighbor += isAboveRightAvailable(cu, partIdxLT,<br>
> partIdxRT, (bNeighborFlags + leftUnits + 1 + cuWidthInUnits));<br>
> > +        numIntraNeighbor += isLeftAvailable(cu, partIdxLT, partIdxLB,<br>
> (bNeighborFlags + leftUnits - 1));<br>
> > +        numIntraNeighbor += isBelowLeftAvailable(cu, partIdxLT,<br>
> partIdxLB, (bNeighborFlags + leftUnits   - 1 - cuHeightInUnits));<br>
> > +    }<br>
> > +    else<br>
> > +    {<br>
> > +        bNeighborFlags[leftUnits] = isAboveLeftAvailableCIP(cu,<br>
> partIdxLT);<br>
> > +        numIntraNeighbor += (int)(bNeighborFlags[leftUnits]);<br>
> > +        numIntraNeighbor += isAboveAvailableCIP(cu, partIdxLT,<br>
> partIdxRT, (bNeighborFlags + leftUnits + 1));<br>
> > +        numIntraNeighbor += isAboveRightAvailableCIP(cu, partIdxLT,<br>
> partIdxRT, (bNeighborFlags + leftUnits + 1 + cuWidthInUnits));<br>
> > +        numIntraNeighbor += isLeftAvailableCIP(cu, partIdxLT,<br>
> partIdxLB, (bNeighborFlags + leftUnits - 1));<br>
> > +        numIntraNeighbor += isBelowLeftAvailableCIP(cu, partIdxLT,<br>
> partIdxLB, (bNeighborFlags + leftUnits   - 1 - cuHeightInUnits));<br>
> > +    }<br>
> ><br>
> >      width = cuWidth * 2 + 1;<br>
> >      height = cuHeight * 2 + 1;<br>
> > _______________________________________________<br>
> > x265-devel mailing list<br>
> > <a href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a><br>
> > <a href="https://mailman.videolan.org/listinfo/x265-devel" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
><br>
><br>
><br>
> --<br>
> Steve Borho<br>
> _______________________________________________<br>
> x265-devel mailing list<br>
> <a href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a><br>
> <a href="https://mailman.videolan.org/listinfo/x265-devel" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
<br>
_______________________________________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
</div></div></blockquote></div><br></div>