[Ffmpeg-devel] question on cs_test testing semantics.

mmh mmh
Thu Mar 29 19:19:02 CEST 2007


Michael Niedermayer writes:
 > Hi
 > 
 > On Thu, Mar 29, 2007 at 11:16:31AM -0400, mmh wrote:
 > > Michael Niedermayer writes:
 > >  > Hi
 > >  > 
 > >  > On Thu, Mar 29, 2007 at 08:40:56AM -0400, Marc Hoffman wrote:
 > >  > > 
 > >  > > This function is called in a big loop running over src with an offset
 > >  > > which advances by 1 in each iteration.  This causes a misaligned
 > >  > > access violation on some non X86 architectures. I'm curious as to why
 > >  > > this test is written this way. Is the intent to start sampling the
 > >  > > input pixels at odd memory locations as the beginning of the first
 > >  > > sample?  
 > >  > 
 > >  > hmm i dont think the intent is to do missaligned accesses ...
 > >  > 
 > > 
 > > Well I'm not sure then because the cs_test loop does the following:
 > > 
 > > cs_test:
 > >     for(dstOffset=128; dstOffset<196; dstOffset++){
 > >	     int srcOffset;
 > >	         memset(dstBuffer, dstByte, SIZE);
 > > 
 > >	    for(srcOffset=128; srcOffset<196; srcOffset++){
 > >			           uint8_t *src= srcBuffer+srcOffset;
 > >					       uint8_t *dst= dstBuffer+dstOffset;
 > >						           char *name=NULL;
 > > 
 > >		    if(failed) break; //don't fill the screen with shit ...
 > > 
 > >		    switch(funcNum){
 > >			    case 0:
 > >					    srcBpp=2;
 > >							    dstBpp=2;
 > >									    name="rgb15to16";
 > >											    rgb15to16(src, dst, width*srcBpp);
 > >														    break;
 > > 
 > > It might not have been the intent but it is what is happening. I think
 > > X86's just handle this fine and considering the input pattern is fixed
 > > 55 one would never see this behavior.  On machines with strict
 > > alignment this code doesn't work because:
 > > 
 > >    register unsigned x= *((uint32_t *)s);
 > > 
 > > which is an odd pointer based on srcOffset++.
 > > 
 > > How about we increment by 4 it doesn't really matter based on what
 > 
 > i dont remember what the original intent of teh code was but its wrong
 > as its written so yes iam fine with +=4
 > 

here are the changes we have discussed:

[ATTACHMENT ~/cs-test-darwin.patch, application/octet-stream]




More information about the ffmpeg-devel mailing list