[Ffmpeg-devel] H.264 encoder

Christian Iversen chrivers
Wed Oct 4 19:11:54 CEST 2006


On Wednesday 04 October 2006 19:00, Morten Nilsen wrote:
> Christian Iversen wrote:
> >>>> +                if (val > 0)
> >>>> +                    val--;
> >>>> +                else // < 0
> >>>> +                    val++;
> >>>
> >>> val -= (val>>31)|1;
> >
> > Is it because I appearantly don't understand C, or is that a pretty odd
> > expression?
> >
> > You take the sign bit, and "or" it with 1, leaving ... 1, in all cases.
> >
> > Is this expression equiv. to val--; ?
>
> -xxx >> 31 = -1
>  xxx >> 31 =  0
>
> -1 | 1 = -1
>  0 | 1 =  1
>
> so, we get;
> negative: val -= -1;
> positive: val -=  1;
>
> Quite elegant, I just love bit magic. :)

Absolutely, it all makes sense now :)

So, it there some way to force logical SHR in C?

-- 
Regards,
Christian Iversen




More information about the ffmpeg-devel mailing list