[ogg-dev] data alignment issue on ARM
    Erik de Castro Lopo 
    mle+la at mega-nerd.com
       
    Mon May  4 00:38:59 PDT 2009
    
    
  
Conrad Parker wrote:
> The relevant code is in liboggz HEAD at:
> 
> http://git.xiph.org/?p=liboggz.git;a=blob;f=src/liboggz/oggz_auto.c;h=ebb825c348298dc352a54d6925ce74ed707bbc3a;hb=HEAD#l138
My suspicion is this:
    fps_numerator = INT32_BE_AT(&header[22]);
Sure enough, INT32_BE_AT is defined as:
    #define INT32_BE_AT(x) _be_32((*(ogg_int32_t *)(x)))
which will work fine as long as x in 4 byte aligned.
I suspect that if INT32_BE_AT is defined as follows:
   static int32_t
   INT32_BE_AT (unsigned char *c)
   {   return (c [0] <<  24) + (c [1] <<  16) + (c [2] <<  8) + c [0] ;
   }
then you won't see the problem.
Erik
-- 
----------------------------------------------------------------------
Erik de Castro Lopo
http://www.mega-nerd.com/
    
    
More information about the ogg-dev
mailing list