[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