[Ffmpeg-devel] H.264 encoder

Christian Iversen chrivers
Wed Oct 4 19:39:47 CEST 2006


On Wednesday 04 October 2006 19:11, Panagiotis Issaris wrote:
> On wo, 2006-10-04 at 19:11 +0200, Christian Iversen wrote:
> > 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?
>
> Casting to unsigned first :)

Ah, thanks :)

-- 
Regards,
Christian Iversen




More information about the ffmpeg-devel mailing list