[Theora-dev] 16 bits, cast on idct function

Felipe Portavales Goldstein portavales at gmail.com
Tue May 30 23:07:03 PDT 2006

Hi all,

Just a stupid question

The IDctSlow function on file idct.c has this line :

      ip[0] = (ogg_int16_t)((_Gd + _Cd )   >> 0);

The ip[0] , _Gd and _Cd are of type ogg_int32_t

My question is:

The result of (_Gd + _Cd)  can be a number with more than 16 bits ?
(yes, it can be because they are int32, but the algorithm could
guarantee something about that... I dont know...)

If can, the cast (ogg_int16_t) will truncate the number to the 16 less
significant bits, and will get a wrong result...

the ip[0] is 32 bits, so, why truncate to 16 bits ?

But I'm realy confused with the >> 0 ,
This shift right zero can do something or someone just forgot to delete it ?

-- Felipe

More information about the Theora-dev mailing list